意圖:
將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
適用性:
當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。
當構造過程必須允許被構造的物件有不同的表示時。
示例**:
#執行結果:-*- coding:utf-8 -*-
'''builder
'''#
建造者模式
#相關模式:思路和模板方法模式很像,模板方法是封裝演算法流程,對某些細節,提供介面由子類修改,建造者模式更為高層一點,將所有細節都交由子類實現。
#建造者模式:將乙個複雜物件的構建與他的表示分離,使得同樣的構建過程可以建立不同的表示。
#基本思想
#某類產品的構建由很多複雜元件組成;
#這些元件中的某些細節不同,構建出的產品表象會略有不同;
#通過乙個指揮者按照產品的建立步驟來一步步執行產品的建立;
#當需要建立不同的產品時,只需要派生乙個具體的建造者,重寫相應的元件構建方法即可。
defprintinfo(info):
(info) #
建造者基類
class
personbuilder():
defbuildhead(self):
pass
defbuildbody(self):
pass
defbuildarm(self):
pass
defbuildleg(self):
pass#胖子
class
personfatbuilder(personbuilder):
type = '胖子'
defbuildhead(self):
printinfo(
"構建%s的大。。。。。頭
" %self.type)
defbuildbody(self):
printinfo(
"構建%s的身體
" %self.type)
defbuildarm(self):
printinfo(
"構建%s的手
" %self.type)
defbuildleg(self):
printinfo(
"構建%s的腳
" %self.type) #
瘦子class
personthinbuilder(personbuilder):
type = '瘦子'
defbuildhead(self):
printinfo(
"構建%s的頭
" %self.type)
defbuildbody(self):
printinfo(
"構建%s的身體
" %self.type)
defbuildarm(self):
printinfo(
"構建%s的手
" %self.type)
defbuildleg(self):
printinfo(
"構建%s的腳
" %self.type) #
指揮者class
persondirector():
pb =none;
def__init__
(self, pb):
self.pb =pb
defcreatepereson(self):
self.pb.buildhead()
self.pb.buildbody()
self.pb.buildarm()
self.pb.buildleg()
defclientui():
pb =personthinbuilder()
pd =persondirector(pb)
pd.createpereson()
pb2 =personfatbuilder()
#pd = persondirector(pb)
pd.pb =pb2
pd.createpereson()
return
if__name__ == '
__main__':
clientui();
personbuilder(父類 or 基類)
personfatbuilder(personbuilder的子類 or派生類):作用為建立乙個胖子的身體部位
personthinbuilder(personbuilder的子類 or派生類):作用為建立乙個瘦子的身體部位
persondirector(新式類):作用為根據personbuilder子類物件(如personfatbuilder())讓其建立其身體部位
建立者模式
當我們使用抽象工廠時,在客戶端進行呼叫的時候,如果產品的類別比較多,那麼此時工廠返回的例項物件將會很多。客戶端得 將會大大增加,這將不利於程式的可讀性。為了解決此類問題,可以把所有例項的建立放在乙個類中去生成,這樣在客戶端只需要呼叫這個建立者類,大大減少客戶端的 量。1,所有動物類的介面 packa...
建立者模式
建造者模式的定義將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示 大話設計模式 舉了乙個很好的例子 建造小人,一共需建造6個部分,頭部 身體 左右手 左右腳。與工廠模式不同,建造者模式是在導向者的控制下一步一步構造產品的。建造小人就是在控制下一步步構造出來的。建立者模式可以能...
建立者模式
建造者模式也叫生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。物件的建立 builder模式是為物件的建立而設計的模式 建立的是乙個復合物件...