设计模式(3)——建造者模式
建造者模式对客户端屏蔽了复杂对象的创建过程,而且复杂对象的创建步骤交给一个指挥者(Director)进行封装,提供出一个简单明了的方法供上层模块使用。
eg: 以客户需要建一所新的房子为背景:
定义客户为客户端(上层使用模块 Client)
包工头为指挥者(Director)
施工队资质为抽象建造者(AbstractBuilder)
具有资质的施工队为建造者(Builder,施工队可以有多重类型,比如别墅施工队、写字楼施工队、普通住房施工队等/....)
房屋为最终的产品(Product)
客户雇佣包工头修建住宅,客户只和包工头打交道。包工头按照客户需求雇佣施工队,安排施工计划。由施工队对住宅进行具体建设,最后住宅修建完成。
客户只想要房子其他都不懂,所以他找到了包工头说:"我要修xxx房子,交给你负责。"。包工头知道修建房屋的所有步骤和流程,他雇佣一支有资质且符合他要求的施工队然后安排好流程。
施工队被包工头安排开工,最后房屋建成。客户得到了房子。
在建造者模式中,Product的复杂实现流程由 Director 指挥 Builer 完成。 Builder 提供修建能力, Director 寻找合适的Builder 安排工作流程,提供了交付房屋的能力。 Clinet 的工作就变得十分简单
只要找到 Director 调用交付房屋的功能即可。
建造者模式对客户端屏蔽了复杂对象的实现方式,通过 Director 获取自己需要的 Product。
欺骗自己最简单,欺骗自己最困难。
安慰自己最简单,安慰自己最困难。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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键入的事件触发