zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Window 7 + Ubuntu 双系统安装
    Android Proguard
    windows管理方式
    开启Telnet服务
    java中的Date类
    java中String字符串
    java自定义异常和throw、throws的使用
    java异常的嵌套和级联
    java中各种常见的异常
    java异常的基本概念和处理流程
  • 原文地址:https://www.cnblogs.com/huzi007/p/3885114.html
Copyright © 2011-2022 走看看