1. 程式人生 > >unity設計模式-----建造者模式

unity設計模式-----建造者模式

建造者模式(Builder Pattern): 
將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

 

 

作用: 在使用者不知道物件的建造過程和細節的情況下就可以直接建立複雜的物件。

(1)使用者只需要給出指定複雜物件的型別和內容

(2)建造者模式負責按順序建立複雜物件(把內容的建造過程和細節隱藏起來)

 

解決問題:

抽象工廠模式解決了"系列產品"的需求變化,而建造者模式解決的是"產品部分"的需要變化

1>方便使用者建造複雜的物件(不需要知道實現過程)

2>程式碼複用性,封裝性(將物件構造過程和細節進行封裝&複用)

 

產品(Product):產品類,規定了產品的組成部件。這裡的產品是同一類產品。
抽象建造者(Builder):為一個產品(Product)物件的各個部件提供了一個抽象介面
具體建造者(ConcreteBuilder):實現Builder介面,根據具體的要求建造和裝配各個部件
指揮者(Director):用來指揮建立過程,直接和客戶(Client)進行需求溝通,構建了一個使用builder介面的物件

具體流程:

1.指揮者(Director)和客戶交流,獲取客戶需要什麼產品

2.指揮者交流後知道了產品需求,根據需求來決定產品部件的構造,統一分給各部門相應的建造者(Builder)

3.各部門再安排給具體的生產小組(ConcreteBuilder),造出部件

4.最終完成產品的生產,告訴老闆(指揮者Director)做好了

 

建造者模式優缺點:

優點:

(1)易於解耦:將產品本身與產品建立過程進行解耦,可以使用相同的建立過程來得到不同的產品,即細節依賴抽象

(2)易於精確控制物件的建立:將複雜產品的建立步驟分解在不同的方法中,使得建立過程更加清晰

(3)易於拓展:增加新的具體建造者無需修改原有類庫的程式碼,易於拓展,符合"開閉原則"

(4)綜述:每一個具體建造者都相對獨立,而與其他的具體建造者無關,因此可以很方便地替換具體建造者或增加新的具體建造者,使用者使用不同的具體建造者即可得到不同的產品物件

缺點:

(1)建造者模式所建立的產品一般具有較多的共同點,其組成部分相似;如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用的範圍受到一定的限制

(2)如果產品的內部變化複雜,可以會導致需要定義很多具體建造者類來實現這種變化,導致系統變得很龐大

 

適用場景:

(1)需要生成的產品物件有複雜的內部結構,這些產品物件具備共性

(2)隔離複雜物件的建立和使用,並使得相同的建立不同的產品