5 建造者模式

2021-10-12 11:10:24 字數 2279 閱讀 6643

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 建造者模式

建立型設計模式,就是專門用來建立物件 建立物件的事兒全權由你負責,我就不操心了,有點想領導的感覺,命令下去,活都是工人的,至於是哪個人去做那些事,才是領導的責任。建造者模式,例如乙個車間系統中,如果需要車間老闆想要一批車輛時,在這個實際需求中,車輛就是乙個複雜的物件,它是由車燈 車輛 機箱等組裝而成...