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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM