设计模式(3)——建造者模式

  建造者模式对客户端屏蔽了复杂对象的创建过程,而且复杂对象的创建步骤交给一个指挥者(Director)进行封装,提供出一个简单明了的方法供上层模块使用。

  eg: 以客户需要建一所新的房子为背景:

  定义客户为客户端(上层使用模块 Client)

  包工头为指挥者(Director)

  施工队资质为抽象建造者(AbstractBuilder)

  具有资质的施工队为建造者(Builder,施工队可以有多重类型,比如别墅施工队、写字楼施工队、普通住房施工队等/....)

  房屋为最终的产品(Product)

  

  客户雇佣包工头修建住宅,客户只和包工头打交道。包工头按照客户需求雇佣施工队,安排施工计划。由施工队对住宅进行具体建设,最后住宅修建完成。

  客户只想要房子其他都不懂,所以他找到了包工头说:"我要修xxx房子,交给你负责。"。包工头知道修建房屋的所有步骤和流程,他雇佣一支有资质且符合他要求的施工队然后安排好流程。

施工队被包工头安排开工,最后房屋建成。客户得到了房子。

  在建造者模式中,Product的复杂实现流程由 Director 指挥 Builer 完成。 Builder 提供修建能力, Director 寻找合适的Builder 安排工作流程,提供了交付房屋的能力。 Clinet 的工作就变得十分简单

只要找到 Director 调用交付房屋的功能即可。

  建造者模式对客户端屏蔽了复杂对象的实现方式,通过 Director 获取自己需要的 Product。

posted @   不要西红柿  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2019-12-19 js阻止页面enter键入的事件触发
点击右上角即可分享
微信分享提示