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


    建造者(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

  • 相关阅读:
    AngularJS双向绑定,手动实施观察
    AngularJS的Hello World
    LESS碎语
    chrome浏览器调试报错:Failed to load resource: the server responsed width a status of 404 (Not Found)…http://127.0.0.1:5099/favicon.ico
    AngularJS报错:[$compile:tpload]
    Javascript中的依赖注入
    使用HTML5和CSS3碎语
    在Brackets中使用Emmet
    使用Brackets
    Bootstrap碎语
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/8519768.html
Copyright © 2020-2023  润新知