zoukankan      html  css  js  c++  java
  • 建造者模式 (学习笔记6)

    原文地址:http://c.biancheng.net/view/1354.html

    什么时候用:

    1. 一个复杂的对象
    2. 该对象构造过程由多个部分组成
    3. 各部分的构造是有先后顺序的

    主要角色:

    1. 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
    2. 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
    3. 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
    4. 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

    结构图:

    image

    示例代码:

    1. 产品角色
    2. class Product {
          private String partA;
          private String partB;
          private String partC;
      
          public void setPartA(String partA) {
              this.partA = partA;
          }
      
          public void setPartB(String partB) {
              this.partB = partB;
          }
      
          public void setPartC(String partC) {
              this.partC = partC;
          }
      
          public void show() {
              //显示产品的特性
          }
      }
    3. 抽象建造者
    4. abstract class Builder {
          //创建产品对象
          protected Product product = new Product();
      
          public abstract void buildPartA();
      
          public abstract void buildPartB();
      
          public abstract void buildPartC();
      
          //返回产品对象
          public Product getResult() {
              return product;
          }
      }
    5. 具体建造者
    6. public class ConcreteBuilder extends Builder {
          public void buildPartA() {
              product.setPartA("建造 PartA");
          }
      
          public void buildPartB() {
              product.setPartB("建造 PartB");
          }
      
          public void buildPartC() {
              product.setPartC("建造 PartC");
          }
      }
    7. 指挥者
    8. class Director {
          private Builder builder;
      
          public Director(Builder builder) {
              this.builder = builder;
          }
      
          //产品构建与组装方法
          public Product construct() {
              builder.buildPartA();
              builder.buildPartB();
              builder.buildPartC();
              return builder.getResult();
          }
      }
    9. 调用者
    10. public class Client {
          public static void main(String[] args) {
              Builder builder = new ConcreteBuilder();
              Director director = new Director(builder);
              Product product = director.construct();
              product.show();
          }
      }


  • 相关阅读:
    Money-去哪了每日站立会议
    Money去哪了- 每日站立会议
    Money-去哪了每日站立会议
    Money去哪了- 每日站立会议
    Money去哪了- 每日站立会议
    Money去哪了 个人计划列表
    软件需求NABCD分析-Money去哪了
    满足小学生在线答题,记录错题及更正错题的四则运算
    11.21 个人总结
    11.20 个人总结
  • 原文地址:https://www.cnblogs.com/huiy/p/15556403.html
Copyright © 2011-2022 走看看