定義:將乙個複雜的物件,分成多分,使同樣的構建過程,能有不同的表示,這樣的設計模式被稱為建造者模式。
舉例說明:
李嘉誠的遺囑執行:
財產(產品角色):李嘉誠擁有眾多複雜的財產框架,這裡以現金與物品入例。
遺囑(建造者):相當於建造者,分配現金與物品。
具體遺囑(具體建造者):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.產品的部件由專門的生產廠商來生產,這樣分工...