标签:direct 资质 定义 product clinet 其他 简单 net 要求
建造者模式对客户端屏蔽了复杂对象的创建过程,而且复杂对象的创建步骤交给一个指挥者(Director)进行封装,提供出一个简单明了的方法供上层模块使用。
eg: 以客户需要建一所新的房子为背景:
定义客户为客户端(上层使用模块 Client)
包工头为指挥者(Director)
施工队资质为抽象建造者(AbstractBuilder)
具有资质的施工队为建造者(Builder,施工队可以有多重类型,比如别墅施工队、写字楼施工队、普通住房施工队等/....)
房屋为最终的产品(Product)
客户雇佣包工头修建住宅,客户只和包工头打交道。包工头按照客户需求雇佣施工队,安排施工计划。由施工队对住宅进行具体建设,最后住宅修建完成。
客户只想要房子其他都不懂,所以他找到了包工头说:"我要修xxx房子,交给你负责。"。包工头知道修建房屋的所有步骤和流程,他雇佣一支有资质且符合他要求的施工队然后安排好流程。
施工队被包工头安排开工,最后房屋建成。客户得到了房子。
在建造者模式中,Product的复杂实现流程由 Director 指挥 Builer 完成。 Builder 提供修建能力, Director 寻找合适的Builder 安排工作流程,提供了交付房屋的能力。 Clinet 的工作就变得十分简单
只要找到 Director 调用交付房屋的功能即可。
建造者模式对客户端屏蔽了复杂对象的实现方式,通过 Director 获取自己需要的 Product。
标签:direct 资质 定义 product clinet 其他 简单 net 要求
原文地址:https://www.cnblogs.com/dengsheng/p/14158123.html