日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

大战设计模式【17】—— 建造者模式

發布時間:2025/4/16 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大战设计模式【17】—— 建造者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建造者模式(Builder)

?

設計模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

?

一、定義

將一個復雜對象的構建與它的表示相分離,使得同樣的構建過程可以創建不同的表示。

?

二、結構

Builder(抽象建造者):為創建一個產品對象的各個部件指定抽象接口,在其接口中一般包含兩類方法:一類是BuildPartX(),用于創建復雜對象的各個部件;

另一類是GetResult(),用于返回生成好的復雜對象。它就可以是抽象類,也可以是接口。

ConcreteBuilder(具體建造者):實現了Builder接口,即實現了各個部件的具體構造和裝配方法,定義并明確其所創建的復雜對象。

Product(產品角色):被構建的復雜對象,包含多個組成部件。

Director(指揮者):負責安排復雜對象的建造次序,指揮者與抽象建造者之間存在關聯關系,可以在其Construct()方法中調用建造者對象的部件構造和裝配方法,完成復雜對象的建造。

因此,客戶端只需要和指揮者進行交互,這也確保了單一職責。

?

三、優點

客戶端不需要知道產品內部的組成細節,將產品本身與產品的創建過程解耦,使得相同的創建過程可以創建不同的產品對象。

具體建造者相對獨立,增加新的具體建造者無需修改原有類庫的代碼,系統擴展比較方便,符合開閉原則。

可以更加精細地控制產品的創建過程,將復雜產品的創建步驟分解在不同的方法中,使得創建過程更加清晰,也更方便使用程序來控制創建過程。

?

四、缺點

對于所創建的產品有一定限制:一般這些產品都具有一些較多的共同點,其組成部分相似。如果差異性很大,那么則不適合使用建造者模式。

如果產品的內部結構復雜多變,可能會需要定義很多具體構建者來實現這些變化,會導致系統變得龐大,增加系統的理解難度和運行成本。

?

五、應用場景

需要生成的產品對象由復雜的內部結構,這些產品對象通常包含多個成員變量。

需要生成的產品對象的屬性相互依賴,需要指定其生成順序。

隔離復雜對象的創建和使用,并使得相同的創建過程可以創建不同的產品。

?

六、個人總結

1、建造者模式是用來生產對象的,告訴指揮者你需要什么樣的對象,他就給你建造什么樣的對象。

2、建造者的任務是組裝一個個零件,最終建造出一個你所需要的對象。就如例子中,我們需要建造一個大人和一個小孩對象

我們只要告訴指揮者我們需要什么樣的對象就可以了,他就會幫我們建造好一個完整的對象。

3、建造者模式一個重點是向客戶隱藏了產品的內部表現。

4、建造者模式與抽象工廠模式有點相似,但是建造者模式返回一個完整的復雜產品,而抽象工廠模式則返回一系列相關的產品。

如果將抽象工廠模式看成一個汽車配件生產廠,生成不同類型的汽車配件;

那么建造者模式則是一個汽車組裝廠,通過對配件進行組成返回一輛完整的汽車。

?

?

參考博客:http://www.cnblogs.com/edisonchou/p/6828436.html

轉載于:https://www.cnblogs.com/linkstar/p/7784554.html

總結

以上是生活随笔為你收集整理的大战设计模式【17】—— 建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。