共计 1279 个字符,预计需要花费 4 分钟才能阅读完成。
此前学习了单例模式和工厂模式,准备最近把16种设计模式都学习一遍,至于使用起来还有一段距离。
建造者顾名思义需要我们去造点什么东西出来,当然需要打造的东西需要一步一步来实现,不可能一步登天,只有当各个部分打造好以后才会组成一个完整的东西。
建造者只负责打造东西,究竟打造什么东西还是需要别人来发出造东西的指令,这个指令包含了需要打造的内容,这样就引出了指挥者的角色。
在建造者模式中会有两个角色,建造者和指挥者。
指挥者负责发出指令让建造者生产东西,建造者收到指令后开始生产各个模块然后组装得到最终的东西
下面给出一个形象的指挥者和建造者的关系图:
# coding: utf-8
class Computer:
def __init__(self, serial_number):
self.serial = serial_number
self.memory = None # 单位为GB
self.hdd = None # 单位为GB
self.gpu = None
def __str__(self):
info = ('Memory: {}GB'.format(self.memory),
'Hard Disk: {}GB'.format(self.hdd),
'Graphics Card: {}'.format(self.gpu))
return '\n'.join(info)
class ComputerBuilder:
def __init__(self):
self.computer = Computer('AG23385193')
def configure_memory(self, amount):
self.computer.memory = amount
def configure_hdd(self, amount):
self.computer.hdd = amount
def configure_gpu(self, gpu_model):
self.computer.gpu = gpu_model
class HardwareEngineer:
def __init__(self):
self.builder = None
def construct_computer(self, memory, hdd, gpu):
self.builder = ComputerBuilder()
[step for step in (self.builder.configure_memory(memory),
self.builder.configure_hdd(hdd),
self.builder.configure_gpu(gpu))]
@property
def computer(self):
return self.builder.computer
def main():
engineer = HardwareEngineer()
engineer.construct_computer(hdd=500, memory=8, gpu='GeForce GTX 650 Ti')
computer = engineer.computer
print(computer)
if __name__ == '__main__':
main()
正文完
请博主喝杯咖啡吧!