Builder - 建造者模式

概述:

组装复杂的实例,
自我理解:封装接口, 减少用户开发的困难

Builder_sample


说明:

1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系删除!
转载请标注出处!


案例:

  • 案例说明:

    使用build编写文档,文档具有1.标题(1个),几个字符串,含有条目项目

  • Builder_uml_case
  • 主要代码:
  • Director.java
    package Gof.Builder;
    
    public class Director {
        private Builder builder;
        public Director(Builder builder) {              // 因为接收的参数是Builder类的子类
            this.builder = builder;                     // 所以可以将其保存在builder字段中
        }
        public void construct() {                       // 编写文档
            builder.makeTitle("Greeting");              // 标题
            builder.makeString("从早上至下午");         // 字符串
            builder.makeItems(new String[]{             // 条目
                "早上好。",
                "下午好。",
            });
            builder.makeString("晚上");                 // 其他字符串
            builder.makeItems(new String[]{             // 其他条目
                "晚上好。",
                "晚安。",
                "再见。",
            });
            builder.close();                            // 完成文档
        }
    }
    
  • 代码链接:传送门

    uml综述Builder_uml

  • Builder(建造者): 定义生成用例的接口
  • ConcreteBuilder: 实现Builder角色接口的类
  • Director(监工): 负责使用builder的API生成实例,只调用Builder实例中的方法
  • 时序图:
  • uml_sentense

收获:

  • 面向对象编程中,”谁知道什么”非常重要, 在编程中,应当注意那个类可以使用哪个方法以及使用这个方法到底好不好
  • 正因为不知道所以可以替换,正因为可以替换,组件才具有高价值,我们应当时刻注意这种”可替换性”

相关设计模式:

-Templete Method : 父类控制子类

  • Builder : Director 角色控制Builder角色
  • Composite: 使用Builder生成的对象构造composite模式
  • Abstract Factory: 两者都用来生成复杂实例
  • Facade: facade角色通过组合内部模块向外提供简单调用的接口

注意:

此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!

PS:欢迎大家来到我的小站,鸣谢!