1.定義
建造者模式是將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
2.角色
抽象建立者
具體建立者
指揮者產品
from abc import abcmeta, abstractmethod
# ------產品------
class player:
def __init__(self, face=none, body=none, arms=none, legs=none):
self.face = face
self.body = body
self.arms = arms
self.legs = legs
def __str__(self):
return '%s,%s,%s,%s' % (self.face, self.body, self.arms, self.legs)
# ------抽象建造者------
class playerbuilder(metaclass=abcmeta):
@abstractmethod
def build_face(self):
pass
@abstractmethod
def build_body(self):
pass
@abstractmethod
def build_arms(self):
pass
@abstractmethod
def build_legs(self):
pass
# ------具體建造者,隱藏了乙個產品的內部結構------
class girlbuilder(playerbuilder):
def __init__(self):
self.player = player()
def build_face(self):
self.player.face = '漂亮的臉蛋'
def build_body(self):
self.player.body = '苗條的身材'
def build_arms(self):
self.player.arms = '細細的胳膊'
def build_legs(self):
self.player.legs = '大長腿'
# ------具體建造者,表示**------
class monsterbuilder(playerbuilder):
def __init__(self):
self.player = player()
def build_face(self):
self.player.face = '綠臉'
def build_body(self):
self.player.body = '魁梧的身體'
def build_arms(self):
self.player.arms = '粗壯的胳膊'
def build_legs(self):
self.player.legs = '粗壯的大腿'
# ------指揮者,構造**(構造**和表示**分開),可以對構造過程進行更加精細地控制------
class playerdirectory():
def builder_player(self, builder):
"""隱藏了裝配過程
:param builder:
:return:
"""builder.build_face()
builder.build_body()
builder.build_arms()
builder.build_legs()
return builder.player
# ------客戶端------
builder = girlbuilder()
director = playerdirectory()
p = director.builder_player(builder)
print(p) # 漂亮的臉蛋,苗條的身材,細細的胳膊,大長腿
3.抽象工廠模式
與 建造者模式
區別:建造者模式:著重一步步構造乙個複雜物件(控制順序)。
抽象工廠模式:著重於多個系列的產品物件。
設計模式 5 建造者模式
什麼是建造者模式?構造者模式 bulder pattern 將乙個複雜物件的構建與表示分離,使得同樣的構建可以建立不同的表示。為什麼使用建造者模式?複雜物件相當於一輛有待建造的汽車,而物件的屬性相當於汽車的部件,建造產品的過程就相當於組合部件的過程。由於組合部件的過程很複雜,因此,這些部件的組合過程...
設計模式5 建造者模式
建造者模式 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以創造不同的表示。使用場景 1 相同的方法,不同的執行順序,產生不同的事件結果,可以採用建造者模式 2 多個部件或零件,都可以裝配到乙個物件中,但是產生的執行結果又不相同時,可以使用該模式 3 產品類非常複雜,或者產品類中的呼叫順序...
c 設計模式 5 建造者模式
建立型設計模式,就是專門用來建立物件 建立物件的事兒全權由你負責,我就不操心了,有點想領導的感覺,命令下去,活都是工人的,至於是哪個人去做那些事,才是領導的責任。建造者模式,例如乙個車間系統中,如果需要車間老闆想要一批車輛時,在這個實際需求中,車輛就是乙個複雜的物件,它是由車燈 車輛 機箱等組裝而成...