• 创建型模式建造者模式


    1.1.3建造者模式

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

     适用性

     
        1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
     
        2.当构造过程必须允许被构造的对象有不同的表示时。
                           

     参与者

     
        1.Builder
          为创建一个Product对象的各个部件指定抽象接口。
     
        2.ConcreteBuilder
          实现Builder的接口以构造和装配该产品的各个部件。
          定义并明确它所创建的表示。
          提供一个检索产品的接口。
     
        3.Director
          构造一个使用Builder接口的对象。
     
        4.Product
          表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
          包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

     类图

     例子

    Builder

    public interface PersonBuilder {
         void buildHead();
         void buildBody();
         void buildFoot();
         Person buildPerson();
    }
     

    ConcreteBuilder

    public class ManBuilder implements PersonBuilder {
         Person person;
            public ManBuilder() {
            person = new Man();
        }
            public void buildBody() {
            person.setBody("建造男人的身体");
        }
         public void buildFoot() {
            person.setFoot("建造男人的脚");
        }
         public void buildHead() {
            person.setHead("建造男人的头");
        }
         public Person buildPerson() {
            return person;
        }
    }
     

    Director

    public class PersonDirector {
         public Person constructPerson(PersonBuilder pb) {
            pb.buildHead();
            pb.buildBody();
            pb.buildFoot();
            return pb.buildPerson();
        }
    }
     

    Product

    public class Person {
         private String head;
            private String body;
            private String foot;
         public String getHead() {
            return head;
        }
         public void setHead(String head) {
            this.head = head;
        }
         public String getBody() {
            return body;
        }
         public void setBody(String body) {
            this.body = body;
        }
         public String getFoot() {
            return foot;
        }
         public void setFoot(String foot) {
            this.foot = foot;
        }
    }
     public class Man extends Person {
     }
     

    Test

    public class Test{
            public static void main(String[] args) {
            PersonDirector pd = new PersonDirector();
            Person person = pd.constructPerson(new ManBuilder());
            System.out.println(person.getBody());
            System.out.println(person.getFoot());
            System.out.println(person.getHead());
        }
    }
     

    result

     
    建造男人的身体
    建造男人的脚
    建造男人的头
  • 相关阅读:
    《Java大学教程》—第12章 案例研究--第2部分
    《Java大学教程》—第11章 案例研究--第1部分
    《Java大学教程》—第10章 图形和事件驱动程序
    《Java大学教程》—第8章 通过继承扩展类
    《Java大学教程》—第7章 类的实现
    《Java大学教程》—第6章 类和对象
    《Java大学教程》—第5章 数组
    《Java大学教程》—第4章 方法的实现
    spring_01概念及案例
    MyEclipse中jsp编码设置
  • 原文地址:https://www.cnblogs.com/aloe/p/2651078.html
Copyright © 2020-2023  润新知