設計模式之建造者模式
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
- https://github.com/WeihanLi/DesignPatterns/tree/master/CreatePattern/BuilderPattern
- https://zhuanlan.zhihu.com/p/58093669
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/3500.html
標籤:C#
下一篇:7. 云停車 (原始碼篇)
