建造者模式

建造者模式就是一步一步的创建一个复杂的对象,而且允许用户指定复杂对象的类型和内容。

Builder 类是一个抽象类,用于定义一些创建子部件的方法,Builder类中应该还有一个 getResult() 方法,用于将创建好的部件组装成一个产品返回。

Director 类又称为指挥者,用于安排复杂对象的建造次序,通过construct() 方法,指导Builder类完成组装。

通过一个例子来更好的理解建造者模式,比如说现在的手机都支持更换主题,所有的主题建造过程都是类似的,比如说更换图标,背景,提示音,那么这个时候就可以通过建造者模式来完成这一过程。

先来设计一下Product和Builder类

public class Product {private String mBackground;private String mIcon;private String mSounds;public String getBackground() {return mBackground;}public void setBackground(String background) {mBackground = background;}public String getIcon() {return mIcon;}public void setIcon(String icon) {mIcon = icon;}public String getSounds() {return mSounds;}public void setSounds(String sounds) {mSounds = sounds;}   }public abstract class Builder {private Product mProduct = new Product();public Product getResult(){return mProduct;}public abstract void buildBackground();public abstract void buildIcon();public abstract void buildSounds();
}

可见,不论什么样的主题,以上代码都是通用的,对于不同的主题,只需要在ConcreteBuilder中进行设置就可以了。

public class ConcreteBuilder extends Builder{public void buildBackground(){mProduct.setBackground("Black");}public void buildIcon(){mProduct.setIcon("MyIcon");}public void buildSounds(){mProduct.setSounds("MySounds");}
}

既然产品生产过程已经构建出来了,那么就到了Director 类发挥作用的时候了,现在就由Director 来指挥各个部件的创造,并且将组装好的产品返回给客户端。

public class Director {public Product construct(Builder builder){builder.buildBackground();builder.buildIcon();builder.buildSounds();return builder.getResult();}}

可见Director 类中只有一个简单的方法,有的时候当产品的部件不是很多的时候,完全可以将该方法放到Builder类中,从而省略Director 类。

已经看出,建造者模式和抽象工厂模式很类似。其实,抽象工厂模式更侧重于生产 “部件” , 而建造者模式侧重于将各个 部件组装成一个产品。

作者:ghwaphon
链接:https://www.jianshu.com/p/7d16da4e61b8
來源:简书

Java 设计模式 -- 建造者模式相关推荐

  1. Java 设计模式——建造者模式(Builder Pattern)

    前言 一.简介 ​二.实现方式 三.常见第一种方式 (1)一般有以下几个角色 (2)举个例子 (3)具体步骤 (4)具体代码 三.第二种方式 (1)主要有三个角色:抽象建造者.具体建造者.产品 (2) ...

  2. 我的Java设计模式-建造者模式

    在未上大学之前,一直有个梦想"I have a dream!",就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女.咳咳~~虽然现在没实现我的dre ...

  3. Java设计模式 建造者模式

    前言 建造者模式(Builder Pattern)又称为创建者模式,建造者模式使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在该模 ...

  4. 设计建造者模式java代码,Java设计模式-建造者模式

    定义 Separate the construction of a complex object from its representation so that the sameconstructio ...

  5. java设计模式-建造者模式

    概念:使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. ...

  6. Java设计模式-建造者模式 理论代码相结合

    继工厂模式后的建造者模式,也是java中常常能够见到的模式一种,应用场景也比较广,比较好用. 大家想了解的话,一起来看一看啦.

  7. JAVA设计模式--建造者模式

    目录 前言 一.什么是建造者模式 二.建造者模式的结构 三.建造者模式应用场景 参考文章 前言 在听完厉风行老师<设计模式系列课程>中的建造者模式一节后顿时感觉有点头大,感觉它有点像工厂方 ...

  8. JAVA设计模式 - 建造者模式

    建造者模式 , 又称为生成器模式 . 是创建型模式之一 . 与工厂方法模式和抽象工厂模式不同 , 这两种模式的目的是为了实现多态性 , 而建造者模式的目的则是为了将对象的构建与展示分离 .       ...

  9. 【面试高频】Java设计模式-建造者模式

    ⭐️写在前面 这里是温文艾尔的学习之路

最新文章

  1. cni k8s 插件安装_第一次,如此清晰脱俗的直解K8S网络
  2. Linux服务器上挂载window本地iso镜像文件的方法。
  3. float布局设置同一行行高一样_布局思想:大事化小、先行后列、见缝插针
  4. 列表和字典之间的相互转换-Python3
  5. 常州大学 计算机与人工智能学院,第一届计算机视觉青年学者论坛(CVYSF)在常州大学举办...
  6. HTML5 音频 audio
  7. web页面如何实现点击按钮进行手机拨号?
  8. 从PCA和SVD的关系拾遗
  9. 【锂电池健康状态预测】基于matlab BP神经网络锂电池健康状态预测【含Matlab源码 688期】
  10. 今天终于找到了一款windows下的Zcash钱包(ZEC钱包),推荐给大家
  11. Java算法面试题(008) 字符串反转
  12. Java同步三种实现方式
  13. python做语音识别
  14. C语言逻辑运算符和||,一篇文章带你读懂逻辑表达式!
  15. 计算机控制系统机器人,机器人的控制系统
  16. xp如何在电脑上设置无线网络连接服务器,xp电脑怎么设置wifi
  17. presenting view controller
  18. 八.国民技术MCU开发之 XFMC模块之PSRAM
  19. 北洋 BTP-R150 打印机驱动
  20. SCAP标准协议和威胁情报关键词术语

热门文章

  1. facade 模式和gateway模式的区别
  2. MINA与JMX集成(翻译)
  3. tomact如何处理一个http请求?
  4. Python基础知识(第四天)
  5. 大数据分析币圈动态: ETH、BTC、BCH每秒交易均呈负增长! 以太坊网络传播时间再缩短
  6. 专访王劲:我和百度不一样
  7. oracle删除表中数据_工作表中提供的特定数据在数据库中批量删除的方法
  8. Java - 探究前后分离带来的跨域问题
  9. 实战SSM_O2O商铺_22【商铺列表】Service层开发
  10. Java学习笔记(四)--数据类型与运算符