• 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 }
  • 相关阅读:
    【转】C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
    【转】第三方控件安装方法
    【jQuery插件】chackTextarea类似于新浪腾讯微博文本域字符数判断
    【转】关于wBox iFrame回调关闭问题的解决方案
    【转】jquery插件
    db4o助手 do4oHelper
    【转】C# 中文URL编码
    【转】C#集合之Hashtable
    【转】Web页面导出标准的Excel/Word/txt的代码实现
    jQuery图片居中裁切效果
  • 原文地址:https://www.cnblogs.com/huzi007/p/3885114.html
Copyright © 2020-2023  润新知