設計模式 建立者模式

2022-03-26 13:32:55 字數 2097 閱讀 5943

建立者模式又叫建造者模式,是將乙個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建立者模式隱藏了複雜物件的建立過程,它把複雜物件的建立過程加以抽象,通過子類繼承或者過載的方式,動態的建立具有復合屬性的物件。

建立者模式通常包括如下幾種角色:

1.建造者角色(builder)

對複雜物件的建立過程加以抽象,給出乙個抽象介面,以規範產品物件的各個組成部分的建造。這個介面規定了要實現複雜物件的哪個部分的建立,但並不涉及具體物件不見的建立。

2.具體建立者角色(concreatebuilder)

實現builder介面,針對不同的業務邏輯,具體化複雜物件的各個部分的建立。在建造過程完成後,提供產品的例項。

3.指導者(director)

呼叫具體建造者來建立複雜物件的各個部分,在指導者中不設計具體產品的資訊,只負責保證物件各部分完整建立或者按某種順序建立。

4.產品(product)

要建立的複雜物件,一般來說包含多個部分。

優點:1.建造者獨立,易擴充套件。2.便於控制細節風險。

缺點:1.產品必須有共同點,範圍有限制。2.如內部變化複雜,會有很多的建造類。

使用場景:1.需要生成的物件具有複雜的內部結構。2.需要生成的物件屬性本身相互依賴。

應用例項:1. 去肯德基,漢堡,可樂,薯條,炸雞翅等是不變的,而其組合式經常變化的,生成出所謂的「**」;

建立者模式例項如下:

構建結構:

具體實現:

/*

orchardbuilder.cs

*/public

abstract

class

orchardbuilder

orchardbuilder.cs(建立者角色)

/*

bjorchardbuilder .cs

*/public

class

bjorchardbuilder : orchardbuilder

public

override

void

buildorange()

public

override

orchard getorchard()

}/*shorchardbuilder.cs

*/public

class

shorchardbuilder : orchardbuilder

public

override

void

buildorange()

public

override

orchard getorchard()

}

bjorchardbuilder.cs/shorchardbuilder.cs(具體建立者)

/*

orcharddirector.cs

*/public

class

orcharddirector

public

orchard construct()

}

orcharddirector.cs(指導者)

/*

orchard.cs

*/public

class

orchard

public

string name

public

; }

public

string orange

public

void

plant()

果園種植和!

" }

}

orchard.cs(產品)

設計模式 建立者模式

建造者模式屬於建立型模式 基本原理 有底到高一層層的建立疊加,上層是依靠底層的建立。就如細胞組 體不同的組織,組織組成了不同的人。主要流程 1.建立最基本的單元 2.建立所要建造的物品,使用基本單元建立該物品的元素 3.使用物品建立完整的結構 include include using namesp...

設計模式 建立者 工廠模式

解決問題 當客戶需要手機 而不知道需要什麼型別的手機 就是對某一類需求,而不知道具體需求,用工廠模式可以做到靈活的滿足需求,按照客戶的需要 生產出對應的各種型別的手機 public inte ce phone public class motophone implements phone overr...

建立者模式

當我們使用抽象工廠時,在客戶端進行呼叫的時候,如果產品的類別比較多,那麼此時工廠返回的例項物件將會很多。客戶端得 將會大大增加,這將不利於程式的可讀性。為了解決此類問題,可以把所有例項的建立放在乙個類中去生成,這樣在客戶端只需要呼叫這個建立者類,大大減少客戶端的 量。1,所有動物類的介面 packa...