Java建造(Builder)模式 —— 建造(Builder)模式

一、什么是建造模式:

  建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而使一个建造过程生成具有不同内部表象的产品。客户端不需要知道产品内部的结构和生产过程。

二、建造模式的结构:

  Builder(抽象建造者角色):一个抽象的建造者父类结构,规定产品对象各个组成成分的建造。

  ConcreteBuilder(产品的具体建造者):继承抽象建造者角色,实现建造方法buildPart1()、builderPart2(),完成产品零件实例的创建;返回产品实例的方法retrieveResultProuduct(),一般而言零件数和产品的建造方法数相同。

  Prouduct(产品):具体建造者建造的对象。

  Director(导演者角色):调用具体产品的创建者 ,获取产品对象。

 1 /**
 2  * 建造者模式建造者
 3  *
 4  * @author ZhouDX
 5  * @since 2019/3/6 21:54:40
 6  */
 7 public interface Builder {
 8     /**
 9      * 建造方法1
10      */
11     public void method1();
12 
13     /**
14      * 建造方法2
15      */
16     public void method2();
17 
18     /**
19      * 返回产品
20      */
21     public Product returnResult();
22 }
View Code
 1 /**
 2  * @author ZhouDX
 3  * @since 2019/3/6 22:04:22
 4  */
 5 public class ConcreteBuilder implements Builder {
 6     private Product product = new Product();
 7 
 8     @Override
 9     public void method1() {
10         product.setProuductId("10000001");
11     }
12 
13     @Override
14     public void method2() {
15         product.setPrice("100");
16     }
17 
18     @Override
19     public Product returnResult() {
20         return product;
21     }
22 }
View Code
 1 /**
 2  * 建造者模式产品对象
 3  *
 4  * @author ZhouDX
 5  * @since 2019/3/6 22:02:58
 6  */
 7 public class Product {
 8     /**
 9      * 产品Id
10      */
11     private  String prouductId;
12     /**
13      * 产品价格
14      */
15     private  String price;
16 
17     public String getProuductId() {
18         return prouductId;
19     }
20 
21     public void setProuductId(String prouductId) {
22         this.prouductId = prouductId;
23     }
24 
25     public String getPrice() {
26         return price;
27     }
28 
29     public void setPrice(String price) {
30         this.price = price;
31     }
32 }
View Code
 1 /**
 2  * @author ZhouDX
 3  * @since 2019/3/6 22:07:41
 4  */
 5 public class Director {
 6     private Builder builder;
 7 
 8     public void constructor() {
 9         builder = new ConcreteBuilder();
10         builder.method1();
11         builder.method2();
12         builder.returnResult();
13     }
14 
15     public static void main(String[] args) {
16         Director director = new Director();
17         director.constructor();
18         System.out.println(director.builder.returnResult().getProuductId());
19         System.out.println(director.builder.returnResult().getPrice());
20     }
21 }
View Code

猜你喜欢

转载自www.cnblogs.com/zhoudaxing/p/10513780.html