先說下建造者模式各個角色模擬。建造者模式
1.有乙個對外的統一管理者 manger 模擬:包工頭 對客戶來說的唯一對接人,所以**中 只和它對接
2.抽象建造者 abstractbuilder ,施工隊,該施工隊可以完成大廈各個部分的組成,如水泥,木工,鋼筋工等工種 去完成對應的活。
3.具體建造者 具備完成某種建造能力的builder 具體的某一施工隊。裡面 有各種建築工人種類。
4.最終構建完成的產品product 大廈完成所需要的組成部分。各組成部分由對應施工隊完成
現在已大廈作為模擬:
完成大廈需要的零部件 假如有倆種:木頭,水泥。
呼叫流程: 包工頭接到乙個工程。
然後包工頭去找了 乙個施工隊。施工隊中有各種工種,各種工人。
去完成對應的大廈組成部件,
然後將部件組裝起來。
大廈完成。
1.設計思路
先定義大廈需要的組成部分
把活派給包工頭
包工頭找來施工隊
施工隊完成大廈組成
交付優點:
**靈活,可讀性 高可以很靈活的完成複雜產品的整體的某個組成的快速迭代
缺點產品過於複雜的話,可能就導致定義很多的具體建造類。
和抽象工廠的比較 建造者模式專注於某乙個產品的完整建立。
抽象工廠是完成一系列產品的生產過程。
在實戰中 我們一般都是出於包工頭的角色。
**實戰:
// 要完成的某一複雜產品public
class
dasha
public
void
setmutou(string mutou)
public
string getshuini()
public
void
setshuini(string shuini)
public
string getgangjin()
public
void
setgangjin(string gangjin)
@override
public
string tostring()
}
/** * 抽象建造者,完成整個大廈完成 需要的的建築能力 施工隊需要具備的能力
* 裡面有各種 完成複雜產品的建造者具備的能力
/** * 某一施工隊完成 具體的施工隊 */
public
class
buildera extends absractbuilder
@override
public
void
buildshuini()
@override
public
void
buildgangjin()
}
/*** 包工頭統一對外介面 包工頭驗收交付
*/public class baogongtou
/*** 包工頭完成最後交付工作
** @return
*/public dasha getresult()
}
*/public
abstract
class
absractbuilder
}
/** * 建造者模式測試 */
public
class
buildtest
}
建造者模式
1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...
建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
建造者模式
建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...