###
意义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性:
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
举例:
``` class Builder(object): “"”建造流程:原料—施工””” def init(self): self.materiel = None self.design = None
def run(self): print(f’修建完工!设计建筑: {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(object): “"”调度:买原料-组织施工””” def init(self): self.programme = None
def build(self):
self.programme.get_materiel()
print(f"购买原料:{self.programme.materiel}")
self.programme.get_design()
print(f"设计方案:{self.programme.design}")
self.programme.run()
if name == ‘main’: # 修建毛坯房 test = Director() test.programme = A() test.build()
# 修建写字楼
test = Director()
test.programme = B()
test.build() ```
输出结果:
购买原料:砖瓦
设计方案:毛坯房
修建完工!设计建筑: 毛坯房 | 购买原料: 砖瓦
购买原料:玻璃
设计方案:写字楼
修建完工!设计建筑: 写字楼 | 购买原料: 玻璃