设计模式--建造者模式--简记

建造者(Builder)模式

  定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  通常包括的角色:

    1.Builder:给出一个抽象的接口,以规范产品对象的各个组成成分的建造。

    这个接口规定要实现复杂对象的哪些部分的创建,不涉及具体的对象部件的创建。

    2.ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。在建造完成后,提供产品的实例。

    3.Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

    4.Product:要创建的复杂的对象

  使用场景:

    1.需要生成的对象具有复杂的内部结构

    2.需要生成的对象内部属性本身相互依赖

 1 //要创建的复杂对象:Product
 2 //建立一个人物对象Person
 3 public class Person {
 4     
 5     private String head;
 6     private String body;
 7     private String foot;
 8     
 9     public String getHead() {
10         return head;
11     }
12     
13     public void setBody(String head) {
14         this.head = head;
15     }
16     
17     public String getHead() {
18         return body;
19     }
20     
21     public void setBody(String body) {
22         this.body = body;
23     }
24     
25     public String getFoot() {
26         return foot;
27     }
28     
29     public void setFoot(String foot) {
30         this.foot = foot;
31     }
32     
33 }
34 
35 
36 //定义一个抽象接口:Builder
37 public interface PersonBuilder {
38     void buildHead();
39     void buildBody();
40     void buildFoot();
41     Person buildPerson();
42 }
43     
44 
45 //实现Builder接口:ConcreteBuilder
46 public class ManBuilder implements PersonBuilder {
47     
48     Person person;
49     
50     public ManBuilder() {
51         person = new Person();
52     }
53     
54     public void buildHead() {
55         person.setHead("build head");
56     }
57     
58     public void buildBody() {
59         person.setHead("build body");
60     }
61     
62     public void buildFoot() {
63         person.setHead("build foot");
64     }
65     
66     public Person buildPerson() {
67         return person;
68     }
69     
70 }
71 
72 
73 //调用构造者来创建复杂对象的各个部分:Director
74 public class PersonDirector {
75     public Person constructPerson(PersonBuilder personBuilder) {
76         personBuilder.buildHead();
77         personBuilder.buildBody();
78         personBuilder.buildFoot();
79         return personBuilder.buildPerson();
80     }
81 }
82 
83 
84 //Test
85 public class Test {
86     
87     public static void main(String[] args) {
88         PersonDirector pd = new PersonDirector();
89         Person person = pd.constructPerson(new ManBuilder());
90         System.out.println(person.getHead());
91         System.out.println(person.getBody());
92         System.out.println(person.getFoot());
93     }
94     
95 }

 

详情:https://www.cnblogs.com/kangsir/p/6653233.html

 

posted on 2018-03-06 23:12  我要的明天  阅读(153)  评论(0编辑  收藏  举报

导航