设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则

介绍:

Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象。

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

模式结构:

首先我们看一下Builder的代码:

public interface Builder {

  //创建部件A  比如创建汽车车轮
  void buildPartA();
  //创建部件B 比如创建汽车方向盘
  void buildPartB();
  //创建部件C 比如创建汽车发动机
  void buildPartC();   //返回最后组装成品结果 (返回最后装配好的汽车)
  //成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
  //从而实现了解耦过程和部件
  Product getResult(); }

接下来我们看一下指挥长Director。

public class Director {

  private Builder builder;

  public Director( Builder builder ) {
    this.builder = builder;
  }
  // 将部件partA partB partC最后组成复杂对象
  //这里是将车轮 方向盘和发动机组装成汽车的过程
  public void construct() {
    builder.buildPartA();
    builder.buildPartB();
    builder.buildPartC();   } }

然后就是具体Builder

public class ConcreteBuilder implements Builder {

  Part partA, partB, partC;
  public void buildPartA() {
    //这里是具体如何构建partA的代码   };
  public void buildPartB() {
    //这里是具体如何构建partB的代码
  };
   public void buildPartC() {
    //这里是具体如何构建partB的代码
  };
   public Product getResult() {
    //返回最后组装成品结果
  };
}

这样一来我们在客户端代码中只需:

ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();

Builder相关比较简单,如果有复杂的对象要创建时可以适用次模式,你也可以通过Director控制复杂对象的组成元素,例如邮件(包含附件,主题,内容...)

最新文章

  1. winform 异步读取数据 小实例
  2. C++的那些事:你真的了解引用吗
  3. (转) Deep Learning in a Nutshell: Reinforcement Learning
  4. SQLServer数据库字典维护方法
  5. LINUX HOOK
  6. 【原则】常用windows开发 客户端工具 收集
  7. C文件函数总结
  8. linux awk命令详解【转载】
  9. [原创]linux简单之美(二)
  10. List<string> to List<decimal> by C# 2.0
  11. Log4j NDC MDC
  12. number问题
  13. UVW源码漫谈(三)
  14. 分贝块---dBblock
  15. c/c++/java如何访问数据库(优秀博文)
  16. 494. Target Sum
  17. Python 数据结构--查找
  18. Java SSM框架之MyBatis3(八)MyBatis之动态SQL
  19. 当Java遇到XML 的邂逅+dom4j
  20. mysql 数据操作 单表查询 group by 介绍

热门文章

  1. seaj和requirejs模块化的简单案例
  2. 《Effective C#》快速笔记(二)- .NET 资源托管
  3. 基于c++的ostu算法的实现
  4. springboot2.0 快速集成kafka
  5. [HDU4532]湫秋系列故事——安排座位
  6. [LOJ #6433]「PKUSC2018」最大前缀和
  7. [JXOI2017]颜色 线段树扫描线 + 单调栈
  8. POJ1523:SPF——题解
  9. BZOJ5288 & 洛谷4436 & LOJ2508:[HNOI/AHOI2018]游戏——题解
  10. 洛谷 P2258 子矩阵 解题报告