设计模式之建造者模式
设计模式之建造者模式
Intro 简介
建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。
需要的组件:
- Product 最终要构建的产品
- AbstractBuilder 创建一个 Product 的抽象 builder
- ConcreteBuilder1/ConcreteBuilder2 创建 Product 具体的 builder
- Director 指挥 builder 如何创建一个复杂的 Product(根据需要可以没有)
主要解决:
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
使用场景
当我们要创建的对象比较复杂,各种参数配置很多的时候可以考虑使用建造者模式,将复杂的构建过程封装在构建者中
Sample
var director = new Director();
Builder builder1 = new ConcreteBuilder1(), builder2 = new ConcreteBuilder2();
director.Construct(builder1);
director.Construct(builder2);
var product2 = builder1.GetResult();
var product2 = builder2.GetResult();
.net core 中的各种 builder (HostBuilder
/ConfigurationBuilder
/...) 我觉得也是属于建造者模式的,只是 Builder 本身就是 Director,
通过 builder 来实现对象的各种参数配置构建最终的目标对象 (Host
/Configuration
/...)
Reference
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步