建造者,顧名思義是修建建築的工人,按照基本的施工方式:打樁-澆築框架-砌牆-裝修,同樣的施工流程卻能造就千差萬別的建築,因為不同的材料、不同設計,可以表現出千差萬別,這就是建造者模式的簡要理解。

示例代碼:# -*- coding:utf-8 -*-class Builder():

"""建造流程:原料—施工"""

def __init__(self): self.materiel = None self.design = None def run(self): print(修建完工!設計建築: %s | 購買原料: %s % (self.design, self.materiel))class A(Builder): """方案A,修建毛坯房""" def get_materiel(self):

self.materiel = "磚瓦"

def get_design(self): self.design = "毛坯房"class B(Builder): """方案B,修建寫字樓""" def get_materiel(self): self.materiel = "玻璃" def get_design(self): self.design = "寫字樓"

class Director: """調度:買原料-組織施工""" def __init__(self): self.programme = None def build(self): self.programme.get_materiel() print("購買原料:{}".format(self.programme.materiel)) self.programme.get_design() print("設計方案:{}".format(self.programme.design))

self.programme.run()

if __name__ == __main__: # 修建毛坯房 test = Director() test.programme = A() test.build() # 修建寫字樓 test = Director() test.programme = B()

test.build()

----------------------------購買原料:磚瓦設計方案:毛坯房修建完工!設計建築: 毛坯房 | 購買原料: 磚瓦購買原料:玻璃設計方案:寫字樓修建完工!設計建築: 寫字樓 | 購買原料: 玻璃上面是一個很簡單直白的例子,建造者模式應該有幾個關鍵要素:相同的流程、不同的表示、修建者。也就是同一個對象(建築)在同一修建者組織下,以相同的實例化流程(施工流程)來達到不同的表示效果(毛坯、寫字樓)這樣的好處使得構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

模式設計:程序發展史的結晶,力求以為簡單直白的原創文章理解最核心的要義,歡迎關注。
推薦閱讀:
相關文章