Arce 发表于 2021-7-26 17:28:04

C#的建造者设计模式(Builder),及Aspnet Core的源代码

Aspnet Core 代码无处不是 Builder 模式,举例:配置建造IConfigurationBuilder、通用主机 IHostBuilder、 配置中间件的:IApplicationBuilder等;到处是 内置委托  Action<T1,...> 作为 函数的参数。
Builder 建造者模式属于大类 “创建型 Create” 之一,还包括:单例模式、工厂模式、抽象工厂模式、原型模式。
A、单例模式 相对简单,确保一个类只有一个实例,并提供对该实例的全局访问。重点是保证多线程获取的实例唯一。
B、简单工厂/工厂模式  参考 《C#设计模式(1)——简单工厂模式》 
《C#设计模式(2)——工厂模式》
------------------------------------------------------------------------------------------------------
0、 参考一文《C#方法作参数——关于Action和Func的使用》 
------------------------------------------------------------------------------------------------------
注意:Builder 模式的具体实例 XXBuiler ,最好通过 “依赖注入”获取,解耦依赖。
1、《设计模式之总体介绍》
2、《C#中的Builder模式》 
3、《C#中的Builder模式》 
4、《C#设计模式系列:建造者模式(Builder)》 
5、《C#设计模式之四建造者模式(Builder Pattern)【创建型】》  

汇总各文章的介绍小结如下: Builder 模式 涉及  抽象接口或类 IBuilder ,实现类 XXConcreteBuilder,指导者 Director (组装类) ,产品类Product(被建造类)。

当然核心是:抽象接口或类 IBuilder ,实现类 XXConcreteBuilder。 产品类Product 的实例的部件(属性)是被 XXConcreteBuilder 的 部件方法具体构造的,并有内置了一个 Product 实例,具体化其部件属性,最后通过 Build(或类似方法 GetProduct等),输出相应 XXConcreteBuilder 建造的产品。
Director 类的作用,是按 XXConcreteBuilder 中各方法的顺序建造部件,然后组装,所以也非是必须的。可以将其功能交给使用者,这样就是 DIY,自行组装产品了。ASPNet Core 中 ”Builder 模式“ 大都是这种自定义模式!!!
Product 其实是一个 基本类,不同的 实现类 XXConcreteBuilder 建造的产品Product ,部件大都是不同的,只是建造(组装)过程相同,请注意。     
----------------------------------------------------------------------------------------------------
示例 IConfigurationBuilder 及其关联对象关联图(引用:配置: 配置模型详解   https://mp.weixin.qq.com/s?__biz=MzIwOTM1MjgzMA==&mid=2247484277&idx=1&sn=5a630553b6512ceb43457763c7ececa8&chksm=97746264a003eb727ec8c5715dece437050380f5090bde096804ded35c223e0264f625355b5a&token=1970862794&lang=zh_CN#rd )
说明: IConfigurationRoot  还有属性  Providers  代表配置源获取数据的 IConfigurationProvider 。在图中没有表示 。

IConfigurationBuilder


文档来源:51CTO技术博客https://blog.51cto.com/u_4948298/3189194
页: [1]
查看完整版本: C#的建造者设计模式(Builder),及Aspnet Core的源代码