• java设计模式--创建模式--建造者模式


    对于建造者模式,小编个人理解为就是一个组装型的模式。

    										建造者模式
     概述
        将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
        
     适用性
        1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
    
        2.当构造过程必须允许被构造的对象有不同的表示时。
        
    参与者
        1.Builder
          为创建一个Product对象的各个部件指定抽象接口。
    
        2.ConcreteBuilder
          实现Builder的接口以构造和装配该产品的各个部件。
          定义并明确它所创建的表示。
          提供一个检索产品的接口。
    
        3.Director
          构造一个使用Builder接口的对象。
    
        4.Product
          表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
          包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
    

      上代码,小编也自己研究了。

     1 public class Test{
     2     
     3     public static void main(String[] args) {
     4         PersonDirector pd = new PersonDirector();
     5         Person person = pd.constructPerson(new ManBuilder());
     6         System.out.println(person.getBody());
     7         System.out.println(person.getFoot());
     8         System.out.println(person.getHead());
     9     }
    10 }
    1 public class PersonDirector {
    2 
    3     public Person constructPerson(PersonBuilder pb) {
    4         pb.buildHead();
    5         pb.buildBody();
    6         pb.buildFoot();
    7         return pb.buildPerson();
    8     }
    9 }
     1 public class ManBuilder implements PersonBuilder {
     2 
     3     Person person;
     4     
     5     public ManBuilder() {
     6         person = new Man();
     7     }
     8     
     9     public void buildBody() {
    10         person.setBody("建造男人的身体");
    11     }
    12 
    13     public void buildFoot() {
    14         person.setFoot("建造男人的脚");
    15     }
    16 
    17     public void buildHead() {
    18         person.setHead("建造男人的头");
    19     }
    20 
    21     public Person buildPerson() {
    22         return person;
    23     }
    24 }
     1 public interface PersonBuilder {
     2 
     3     void buildHead();
     4     
     5     void buildBody();
     6     
     7     void buildFoot();
     8 
     9     Person buildPerson();
    10 }
     1 public class Person {
     2 
     3     private String head;
     4     
     5     private String body;
     6     
     7     private String foot;
     8 
     9     public String getHead() {
    10         return head;
    11     }
    12 
    13     public void setHead(String head) {
    14         this.head = head;
    15     }
    16 
    17     public String getBody() {
    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 }
    1 public class Man extends Person {
    2 
    3 }
  • 相关阅读:
    June 26th 2017 Week 26th Monday
    June 25th 2017 Week 26th Sunday
    June 24th 2017 Week 25th Saturday
    June 23rd 2017 Week 25th Friday
    June 22nd 2017 Week 25th Thursday
    2018最佳网页设计:就是要你灵感爆棚!!!
    图片素材类Web原型制作分享-Pexels
    想要打动HR的心,UX设计师求职信究竟应该怎么写?
    【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实
    2018年最好的医疗网站设计及配色赏析
  • 原文地址:https://www.cnblogs.com/huzi007/p/3885114.html
Copyright © 2020-2023  润新知