建造者模式中核心的角色是建造者和指导者,下面代码演示了一个产品建造的过程:
from abc import ABCMeta, abstractmethod, abstractproperty
class Product:
def __init__(self):
self._parts = []
def info(self):
print('\n'.join(self._parts))
class Builder(metaclass=ABCMeta):
@abstractproperty
def product(self):
pass
@abstractmethod
def build_product_part1(self):
pass
@abstractmethod
def build_product_part2(self):
pass
@abstractmethod
def build_product_part3(self):
pass
def build(self):
return self.product
class ConcreteBuilder(Builder):
def __init__(self):
self._product = Product()
@property
def product(self):
return self._product
@product.setter
def product(self, value):
self._product = value
def build_product_part1(self):
self._product._parts.append('cp1')
def build_product_part2(self):
self._product._parts.append('cp2')
def build_product_part3(self):
self._product._parts.append('cp3')
class Director:
def __init__(self, builder):
self._builder = builder
def direct(self):
self._builder.build_product_part1()
self._builder.build_product_part2()
self._builder.build_product_part3()
if __name__ == '__main__':
b = ConcreteBuilder()
d = Director(b)
d.direct()
b.product.info()
输出:
cp1
cp2
cp3