抽象建造者(Builder):用于规范产品类各个组成的部分,并提供一个返回完整产品方法。
具体建造者(Concrete Builder):实现抽象建造者规定的各个方法,返回一个组建完毕的具体产品。
产品(Product):建造者最终需要创建复杂成品类型。
导演者(Director):规范建造者(Builder)制作出产品过程中的行为顺序,并将最终成品输出给客户。
#!/usr/bin/evn python
# coding=utf-8
from abc import ABCMeta, abstractmethod
# 具体的产品类
class Computer():
@property
def cpu(self):
return self.__cpu__
@cpu.setter
def cpu(self, value):
self.__cpu__ = value
@property
def power(self):
return self.__power__
@power.setter
def power(self, value):
self.__power__ = value
@property
def graphics_card(self):
return self.__graphics_card__
@graphics_card.setter
def graphics_card(self, value):
self.__graphics_card__ = value
@property
def make_memory_module(self):
return self.__make_memory_module__
@make_memory_module.setter
def make_memory_module(self, value):
self.__make_memory_module__ = value
# 抽象建造者(Builder)-计算机抽象类
class ComputerBuilder(metaclass=ABCMeta):
# 抽象Builder的角色---制作CPU的对象角色
@abstractmethod
def make_cpu(self):
pass
# 抽象Builder的角色---制作电源的对象角色
@abstractmethod
def make_power(self):
pass
# 抽象Builder的角色---制作显卡的对象角色
@abstractmethod
def make_graphics_card(self):
pass
# 抽象Builder的角色---制作内存条的对象角色
@abstractmethod
def make_memory_module(self):
pass
# 组合所有的模块返回成品
@abstractmethod
def construct_module(self):
pass
class HuaweiComputer(ComputerBuilder):
'''
抽象建造者(Builder) 实现类--华为电脑
'''
def __init__(self):
self.name = '华为电脑'
self.computer = Computer()
def make_cpu(self):
self.computer.cpu = '返回CPU对象'
return self.computer.cpu
def make_power(self):
self.computer.power = '返回电源对象'
return self.computer.power
def make_graphics_card(self):
self.computer.graphics_card = '返回显卡对象'
return self.computer.graphics_card
def make_memory_module(self):
self.computer.make_memory_module = '返回内存条对象'
return self.computer.make_memory_module
def construct_module(self):
return self.name+"-组装所有的模块"+self.__str__()
class XiaomiComputer(ComputerBuilder):
'''
抽象建造者(Builder) 实现类--小米电脑
'''
def __init__(self):
self.name = '小米电脑'
self.computer = Computer()
def make_cpu(self):
self.computer.cpu = '返回CPU对象'
return self.computer.cpu
def make_power(self):
self.computer.power = '返回电源对象'
return self.computer.power
def make_graphics_card(self):
self.computer.graphics_card = '返回显卡对象'
return self.computer.graphics_card
def make_memory_module(self):
self.computer.make_memory_module = '返回内存条对象'
return self.computer.make_memory_module
def construct_module(self):
return self.name+"-组装所有的模块"+self.__str__()
class ComputerDirector():
'''
指挥组合创建具体的成品
'''
def __init__(self,computer_builder):
self.computer_builder = computer_builder
def construct(self):
# 第1步给CPU
self.computer_builder.make_cpu()
# 第2步给电源
self.computer_builder.make_power()
# 第3步显卡
self.computer_builder.make_graphics_card()
# 第4步内存条
self.computer_builder.make_memory_module()
return self.computer_builder.construct_module()
if __name__ == '__main__':
print(ComputerDirector(HuaweiComputer()).construct())
print(ComputerDirector(XiaomiComputer()).construct())
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。
原文作者:程序员小钟同学;如有侵权,请联系管理员删除。