建造者,开源框架中感觉应用非常常见的一种设计模式。常见的例如okhttp、retrofit,其中的配置都是通过Builder去添加的。
所以这是一种很方便的设计模式。
按照我们之前的模板设计方法举得例子。如果我作为一个消费者,通过模板方法去买外星人电脑,那么我会知道,这台电脑是如何组装的,是怎么拼接cpu,怎么拼接键盘,怎么拼接外壳。而且顺序也定死了。但是,如果是建造者模式的话,那么就会发现,其实我作为消费者,我不关心,如果制造的,我只是输入一些cpu型号,键盘样式,外壳材质就可以得到一台笔记本。我可以通过一个导演(这里指类似可以有限度组装笔记本的那种厂商---准系统)去实现制造一台笔记本(其实这里举例子不太好,应该相应的改为金拱门之类的好点,你作为顾客去点餐,不管是要巨无霸还是麦吉士,你可以再有限范围内挑选是否要黄瓜,是否要cheese等操作,而不需要知道汉堡如何制作出来,等着吃就是了。)那么建造者模式是如何实现的呢?

先来看看uml图
请输入图片描述

作为建造者模式,最重要的就是封装下层细节,有些繁琐的,无需着重实现的实现。
优点:封装性良好,无需关心每一个汉堡是如何生成的,最终生成相应的汉堡吃就完事了;建造者相对独立,容易扩展,需要啥汉堡流程,再添加一个就是了;便于控制细节风险(我的理解就是独立的一个建造模块,是可以自己把控的,不会对别的建造者产生问题和影响)。
使用场景:
产品类很复杂,但是调用顺序不同产生不同的东西,采取使用建造者模式比较适合。

他跟工厂模式有什么区别呢?建造者模式关注的是零件类型和装配工艺(顺序)。翻译过来就是说,工厂模式注重的还是产品本身,他所生产出来的产品都应该是类似的,好比工厂模式生产出来的笔记本,更加注重笔记本本身,有可能你是啥啥笔记本,但是你们功能没啥区别。建造者模式如果生产笔记本,那么他更加关心产品本身创造出来的过程。但是对于最终的消费者来说,他们获取其实没啥区别。

标签: none

添加新评论