概念:

  建造者模式:将一个结构的建造和它的表示分离,使得同样的建造过程可以创建不同的表示。

实现:

  定义书籍接口:

    public abstract class Book {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

  书籍类别:(小说类书籍、工具类书籍...)

    public class NovelBook extends Book {private String plot;public String getPlot() {return plot;}public void setPlot(String plot) {this.plot = plot;}}

    public class ToolBook extends Book {private String purpose;public String getPurpose() {return purpose;}public void setPurpose(String purpose) {this.purpose = purpose;}}

  定义创建者接口:

    public interface BookBuilder {/*** 设置书的id* @param id*/void setBookId(Integer id);/*** 设置书的名称* @param name*/void setBookName(String name);Book createBook();}

  创建者类别:

    public class NovelBookBuilder implements BookBuilder {NovelBook book = new NovelBook();@Overridepublic void setBookId(Integer id) {book.setId(id);}@Overridepublic void setBookName(String name) {book.setName(name);}@Overridepublic Book createBook() {return book;}public void setBookPlot(String plot){book.setPlot(plot);}}

    public class ToolBookBuilder implements BookBuilder {ToolBook book = new ToolBook();@Overridepublic void setBookId(Integer id) {book.setId(id);}@Overridepublic void setBookName(String name) {book.setName(name);}@Overridepublic Book createBook() {return book;}public void setPurpose(String purpose) {book.setPurpose(purpose);}}

分析:通过代码可以简单的分析一下,有没有一种很熟悉的感觉,但又好像觉得不一样,这就对了,设计模式中很多都是这样的感觉,但仔细体会,会有很奇妙的发现,就是有不一样的地放

  1.容易扩展,但不具备普遍性,也就是可以很方便的增加新的类型和对应的建造者,但是还是在一定数量内,不具有一般普遍性,这个主要取决于被创造的对象是否高度统一。

  2.封装型比较好,外部不用知道内部具体什么操作,只关心具体对象的使用即可。
  3.可以和单例或者工厂方法组合。
  4.适用场景:
        a.在调用相同方法,因为顺序不同而导致结果不同时可以考虑。
        b.在构建特别复杂类型时,比如,Book中有一个Author(作者)类型等,或是还需要Cover(封面)类型,甚至多个类型组合。并且这些属性只要在用的前一刻复制就可以,并不影响其他地方使用。
        ...

经典框架中使用的:
  Spring框架,Httpclient中对Cookie容器的设计

转载于:https://www.cnblogs.com/ben-mario/p/10688049.html

设计模式(第四式:建造者模式)相关推荐

  1. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  2. Java设计模式(建造者模式-适配器模式-桥接模式)

    Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...

  3. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  4. java设计模式 建造模式_理解java设计模式之建造者模式

    理解java设计模式之建造者模式 发布于 2020-12-10| 复制链接 摘记: 建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中&qu ...

  5. 建造者模式 php,PHP设计模式之建造者模式定义与用法简单示例

    本文实例讲述了PHP设计模式之建造者模式.分享给大家供大家参考,具体如下: 建造者模式: 将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1). 来点我人类能听懂的话: 1.在客户端看来需 ...

  6. C#设计模式之四建造者模式(Builder Pattern)【创建型】

    一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...

  7. 学习《图说设计模式》建造者模式

    图说设计模式之建造者模式 1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这 ...

  8. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  9. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  10. python设计模式之建造者模式

    python设计模式之建造者模式 ​ 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...

最新文章

  1. caffe web demo 搭建
  2. ios绘图基本图形之线条
  3. flink sql client读取hive时卡住
  4. Ubuntu 17.10安装Qt 5.10环境与Qt Creator 4.5开发工具(转自linux公社)
  5. 双十一!!作为程序员的你该如何拥有个人服务器和域名呢?
  6. Windows中常用的函数调用规范
  7. vs code使用问题
  8. 每日英语:Chinese Show Global Real-Estate Appetite
  9. 一天一点linux(15):Ubuntu14.04 如何安装字体?
  10. AngularJS 学习笔记值post传值
  11. 12.TCP/IP 详解卷1 --- 广播和多播
  12. 使用腾讯云直播开发直播功能
  13. HTML基础代码用法大全,html代码大全(基础使用代码)(颜色代码完整版)
  14. HTML中哪些标记能放在首部,HTML基本结构与常用标记
  15. Chelly个人训练
  16. 行存储 VS 列存储
  17. 项目集管理PgMP:聚焦战略、收益与治理︱项目管理者联盟联合创始人宣晓锋
  18. 史上最全的FTP网址
  19. 服务器参数知多少 带你一一认识这些参数
  20. “量子XX”,是怎么被玩坏的?

热门文章

  1. 修改注册表实现程序开机自启动
  2. addr2line探秘(没有core怎么办)
  3. 每天一道LeetCode-----实现二叉搜索树的迭代器
  4. on java 8 学习笔记 2022.2.16
  5. 简述enumerate函数
  6. 全概公式和贝叶斯公式的理解
  7. html绘图环境,HTML_HTML5 在canvas中绘制文本附效果图,一、绘制文本 在绘图环境中提 - phpStudy...
  8. VS Code修改菜单栏字体大小
  9. Python生成随机数总结
  10. [BUUCTF-pwn]——bbys_tu_2016