设计模式·建造者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式·建造者模式相关的知识,希望对你有一定的参考价值。
参考技术A 将一个复杂的对象的构建与它的表示相分离,使得不同的构建过程可以创建出不同的表示,也叫做生成器模式。工厂模式强调如何生产一个对象,而建造者模式强调顺序,数量不同,组合生成的对象也就会可能产生不同的对象。
在刚看《设计模式之禅》中对建造者模式的讲解时发现,书中的案例和平常工作中遇到的建造者模式不同,当时看的也有点懵逼,先来看一下在我们经常遇到的建造者模式,比如Android的AlertDialog、Glide、Retrofit等也就是下面讲的Java简化版的建造者模式
举个例子:
一台电脑(Computer)包含设备名称、系统版本、CPU型号等多个参数,并且这些参数定义为可空的,如果要初始化这个对象,需要定义众多的构造方法来满足参数可以为空的情况,这种情况可以使用建造者模式结合链式调用简化实现对象的构建。
(对Java而言也可以通过JavaBean的get、set设置属性值,在Kotlin的话因为kotlin支持默认参数属性,所以构造方法在Kotlin中的使用场景相对弱一些)
如下使用方式
输出结果如下:
上面李局了Java简化版的构造者模式,但是经典的构造者模式跟上面这个比起来结构有较大不一致,还是以创建Computer对象为例
对于类图中四个成员的定义如下:
首先定义最终要生产的产品类如下
然后定义抽象建造者
具体的子类建造者实现类,这里定义的LenovoBuilder用于创建联想电脑,有其他的产品比如苹果电脑也可以增加AppleBuilder等
苹果笔记本的构建类如下
通过Director调用Builder的方法来生成产品对象
最后使用测试场景如下
输出结果如下
总结:当产品类非常复杂,不同的调度产生不同的结果时,使用建造者模式比较适合。相同的组件或配件都可以装配到一个对象,但是产生的结果又不相同,可以使用建造者模式。
以上是关于设计模式·建造者模式的主要内容,如果未能解决你的问题,请参考以下文章