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

    Aspnet Core 代码无处不是 Builder 模式,举例:配置建造 IConfigurationBuilder通用主机 IHostBuilder、 配置中间件的:IApplicationBuilder等; 到处是 内置委托  Action<T1,...> 作为 函数的参数。

    Builder 建造者模式属于大类 “创建型 Create” 之一,还包括:单例模式工厂模式抽象工厂模式原型模式

    A、单例模式 相对简单,确保一个类只有一个实例,并提供对该实例的全局访问。重点是保证多线程获取的实例唯一。

    B、简单工厂/工厂模式  参考 《C#设计模式(1)——简单工厂模式》 https://www.cnblogs.com/wyy1234/p/9978389.html

                                                   《C#设计模式(2)——工厂模式

------------------------------------------------------------------------------------------------------

0、 参考一文《C#方法作参数——关于Action和Func的使用》 https://blog.csdn.net/wf824284257/article/details/83661843

------------------------------------------------------------------------------------------------------

注意:Builder 模式的具体实例 XXBuiler ,最好通过 依赖注入”获取,解耦依赖。

1、《设计模式之总体介绍》 https://www.cnblogs.com/edison0621/p/10020447.html

2、《C#中的Builder模式》 https://blog.csdn.net/deatharthas/article/details/87892079

3、《C#中的Builder模式》 https://blog.csdn.net/v2810769/article/details/77823555

4、《C#设计模式系列:建造者模式(Builder)》 https://www.cnblogs.com/libingql/p/3633527.html

5、《C#设计模式之四建造者模式(Builder Pattern)【创建型】》  https://www.cnblogs.com/PatrickLiu/p/7614630.html

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

 

       当然核心是:抽象接口或类 IBuilder ,实现类 XXConcreteBuilder。 产品类Product 的实例的部件(属性)是被 XXConcreteBuilder 的 部件方法具体构造的,并有内置了一个 Product 实例,具体化其部件属性,最后通过 Build(或类似方法 GetProduct等),输出相应 XXConcreteBuilder 建造的产品。

      Director 类的作用,是按 XXConcreteBuilder 中各方法的顺序建造部件,然后组装,所以也非是必须的。可以将其功能交给使用者,这样就是 DIY,自行组装产品了。ASPNet Core 中 ”Builder 模式“ 大都是这种自定义模式!!!

      Product 其实是一个 基本类,不同的 实现类 XXConcreteBuilder 建造的产品Product ,部件大都是不同的,只是建造(组装)过程相同,请注意。     

----------------------------------------------------------------------------------------------------

 示例  IConfigurationBuilder 及其关联对象关联图(引用:配置[3]: 配置模型详解   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

posted @ 2020-02-02 19:42  Hopesun  阅读(1137)  评论(0编辑  收藏  举报