建造者模式

2022-05-09 08:45:13 字數 2098 閱讀 7714

模式定義

建造者模式:將乙個複雜的物件的構建和表示分離,使得同樣的構建過程可以建立不同的表示,建造者模式是一步一步建立乙個複雜的物件它允許使用者只通過指定複雜物件的型別和內容就可以構建他們,使用者不需要具體的內部構建細節,建造者模式屬於物件建立型模式,

模式結構

模式分析

建造者模式有如下角色

1、builder(抽象建造者)

在該介面中,一般宣告兩個兩類方法,一類方法是buildpartx(),用於建立複雜物件的各個部件。另一類方法是getresult(),用於返回複雜物件。

2、concretebuilder(具體建造者)

該類實現builder介面,實現各個部件的構造和裝配方式,定義並明確所創造的複雜物件。也提供乙個方法返回創造好的複雜物件。

3、product(產品角色)

產品角色是被構建的複雜物件,它包含多個組成部件,具體建造者建立並定義產品屬性。

4、director(指揮者)

負責安排複雜物件的建造次序,客戶端一般只需要與指揮者進行互動,

優點:(1)客戶端不必知道產品內部組成的細節,將產品本身和產品的建立過程進行解耦,使得相同的建立過程可以建立不同的物件。

(2)每乙個具體的建立者相對獨立

(3)可以更加精細的控制產品的建立過程,將複雜產品的建立步驟分解在不同的方法中,使得建立過程更清晰。

(4)符合「開閉原則」,增加具體建立者,無需修改類庫的**。

缺點:(1)建造者模式建立的產品一般具有較多的共同點,其組成部分相似,使用範圍受限。

(2)如果產品內部變化複雜,可能導致需要定義很多具體建立者類,導致系統變得很龐大。

kfc案例

meal實體類

package

com.zck.builder;

public

class

meal

public

void

setfood(string food)

public

string getdrink()

public

void

setdrink(string drink)

}

mealbuilder介面類

package

com.zck.builder;

public

abstract

class

mealbuilder

}

meabuildera a**類

package

com.zck.builder;

public

class mealbuildera extends

mealbuilder

public

void

builddrink()

}

mealbuilderb b**類

package

com.zck.builder;

public

class mealbuilderb extends

mealbuilder

public

void

builddrink()

}

director 指揮類

package

com.zck.builder;

public

class

director

public

meal construct()

}

client 客戶端類

package

com.zck.builder;

public

class

client

}

測試結果

建造者模式

1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...

建造者模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

建造者模式

建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...