設計模式 建立型 建造者模式

2021-10-18 02:26:54 字數 2261 閱讀 6583

"""生產乙個遊戲玩家,遊戲玩家由臉、身體、腿、胳膊組成,組裝時有順序要求"""

from abc import abcmeta, abstractmethod

# 產品

class

player

:def

__init__

(self, face=

none

, body=

none

, arm=

none

, leg=

none):

self.face = face

self.body = body

self.arm = arm

self.leg = leg

def__str__

(self)

:return f", , , "

# 抽象建造者

class

playerbuilder

(metaclass=abcmeta)

: @abstractmethod

defbuild_face

(self)

:pass

@abstractmethod

defbuild_body

(self)

:pass

@abstractmethod

defbuild_arm

(self)

:pass

@abstractmethod

defbuild_leg

(self)

:pass

# 具體建造者

class

***girlbuilder

(playerbuilder)

:def

__init__

(self)

: self.player = player(

)def

build_face

(self)

: self.player.face =

"***girl face"

defbuild_body

(self)

: self.player.body =

"***girl body"

defbuild_arm

(self)

: self.player.arm =

"***girl arm"

defbuild_leg

(self)

: self.player.leg =

"***girl leg"

class

monsterbuilder

(playerbuilder)

:def

__init__

(self)

: self.player = player(

)def

build_face

(self)

: self.player.face =

"monster face"

defbuild_body

(self)

: self.player.body =

"monster body"

defbuild_arm

(self)

: self.player.arm =

"monster arm"

defbuild_leg

(self)

: self.player.leg =

"monster leg"

# 指揮者

class

playerdirector

:# 控制組裝順序

defbuild_player

(self, builder)

: builder.build_body(

) builder.build_face(

) builder.build_arm(

) builder.build_leg(

)return builder.player

builder = ***girlbuilder(

)director = playerdirector(

)p = director.build_player(builder)

print

(p)

建立型設計模式 建造者模式

建造者模式的結構 產品角色 抽象建造者 具體建造者 指揮者。相比抽象工廠模式,省掉了抽象產品,多了指揮者。產品class product 抽象建造者 abstract class builder 具體建造者 public class concretebuilder extends builder p...

設計模式 建立型 建造者模式

定義 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。場景初始化乙個物件特別複雜,如使用多個構造方法,或者說有很多引數,並且都有預設值時。一般4個以上引數,考慮使用建造者模式建立物件。為什麼使用建造者 當你要呼叫乙個類的建構函式時,你首先要決定使用哪乙個,然後裡面又是一堆...

建立型設計模式之建造者模式

建造者模式 主要用於將產品修飾的這部分內容抽象化,提供給外部乙個自由定製的修飾渠道,達到自由切換修飾規則但是不用修改舊 的效果。帶有抽象介面的建造者模式主要涉及的物件有 引導者 decorate 產品 抽象建造者介面 builder 定製化的builder。打個比方,我開著一輛拖拉機去石料場運載建築...