設計模式 生成器模式

2022-01-15 14:47:46 字數 2064 閱讀 4886

定義:將乙個複雜的物件,分成多分,使同樣的構建過程,能有不同的表示,這樣的設計模式被稱為建造者模式。

舉例說明:

李嘉誠的遺囑執行:

財產(產品角色):李嘉誠擁有眾多複雜的財產框架,這裡以現金與物品入例。

遺囑(建造者):相當於建造者,分配現金與物品。

具體遺囑(具體建造者):1.給大兒子的財產分配,2,給小兒子的財產分配。

律師(指導者角色):按照具體的遺囑指令分配財產。

例子類圖:

龐大的財產結構**:

//

財產(複雜的財產)

class

caichan

//物品

public

string product

//展示老爸留給他的遺產

public

void

show()

}

遺囑關於遺產的分配,建造者,具體建造者

//

爸爸分配財產(建造者)

abstract

class

didcaichan

//大哥繼承爸爸的財產(具體建造者)

class

olderbrothercaichan : didcaichan

//留給的傳家寶

override

public

void

giveproduct()

override

public

caichan getcaichan()

}//弟弟繼承爸爸的財產(具體建造者)

class

littlebrothercaichan : didcaichan

//留給的傳家寶

override

public

void

giveproduct()

override

public

caichan getcaichan()

}

律師入場,依據遺囑分配財產(指導者角色)

//

律師(指導者角色)

class

lvshi

}

分配遺產現場,客戶端

//

律師入場

lvshi ls = new

lvshi();

//宣讀,關於哥哥和弟弟的遺產分配譯文

didcaichan ge = new

olderbrothercaichan();

didcaichan di = new

littlebrothercaichan();

//分配財產開始

console.writeline(

"律師宣讀父親給哥哥的遺言,並分配財產:");

ls.give(ge);

ge.getcaichan().show();

//點任意鍵,給弟弟分配財產

console.readkey();

console.writeline(

"律師宣讀父親給弟弟的遺言,並分配財產:");

ls.give(di);

di.getcaichan().show();

console.readkey();

以下情況應當使用建造者模式:

1、 產品物件的內部結構需要有不同的展示。

2、 不同的展示物件屬性依賴與同乙個產品物件,產品物件內部順序可自行調整使用。

3、 在物件建立過程中會使用到系統中的一些其它物件,這些物件在產品物件的建立過程中不易得到。

使用建造者模式主要有以下效果:

1、 建造模式的使用使得產品的內部表象可以獨立的變化。使用建造者模式可以使客戶端不必知道產品內部組成的細節。

2、 每個特定的建造者都獨立於其它建造者和程式的其餘部分,這提高拉模組化程度,並使得新增其建造者變的靈活簡單。

3、 因為每乙個建造者都是根據資料來逐步構造出最終的產品的,因此對建造者構造的每個最終產品從頭到尾有更好的控制能力。

設計模式 生成器模式

前兩個文章我介紹了工廠方法模式和抽象工廠模式,這次我來講一些生成器模式。生成器模式我也用的比較多。5個建立型模式裡面,我比較喜歡用工廠方法模式,生成器模式和單例模式。意圖將乙個複雜物件的構建與它的表示分開,使得同樣的構建過程可以建立不同的表示。結構圖 一眼看去是不是和抽象工廠模式有點像?是啊,我也覺...

設計模式 生成器模式

封裝乙個產品的構造過程,並允許按步驟構造 需要經過多個步驟建立的物件,如實際生活中的點餐流程,管理系統中的匯出框架等 此處以點餐流程為例 入口 package com.glt.designpattern.builder public class initmain 建造者類 package com.g...

設計模式之 生成器模式

在產品結構比較複雜,構造過程比較繁瑣,一次性構造比較難的時候,我們可以採取分而治之的原則,將產品元件化,每個元件由專門的廠商來生產,最後的產品指派給制定的車間進行最後裝配.這種方式其實是現代製造業的一種典型的模式.比如汽車,飛機的製造等.這樣做的好處是 1.產品的部件由專門的生產廠商來生產,這樣分工...