如果我们想要创建一个对象,它由多个部分构成,整个构成的过程需要一步步地完成。这时候我们就可能要用到建造者模式了。
一、代码示例:
class Pizza:
def __init__(self, builder):
self.garlic = builder.garlic
self.extra_cheese = builder.extra_cheese
def __str__(self):
garlic = 'yes' if self.garlic else 'no'
cheese = 'yes' if self.extra_cheese else 'no'
info = ('Garlic: {}'.format(garlic), 'Extra cheese: {}'.format(cheese))
return '\n'.join(info)
class PizzaBuilder:
def __init__(self):
self.extra_cheese = False
self.garlic = False
def add_garlic(self):
self.garlic = True
return self
def add_extra_cheese(self):
self.extra_cheese = True
return self
def build(self):
return Pizza(self)
if __name__ == '__main__':
pizza = Pizza.PizzaBuilder().add_garlic().add_extra_cheese().build()
二、小结:
建造者模式的选用遵循下面的原则,大家可以参考:
- 一个复杂的对象由多个部分构成,且对象的创建要经过多个不同的步骤;
- 需要一个对象由不同的表现,并且喜欢将对象的构造与表现解耦;