创建型模式之建造者模式

如果我们想要创建一个对象,它由多个部分构成,整个构成的过程需要一步步地完成。这时候我们就可能要用到建造者模式了。

一、代码示例:

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()

二、小结:

建造者模式的选用遵循下面的原则,大家可以参考:

  • 一个复杂的对象由多个部分构成,且对象的创建要经过多个不同的步骤;
  • 需要一个对象由不同的表现,并且喜欢将对象的构造与表现解耦;

你可能感兴趣的:(创建型模式之建造者模式)