【设计模式】创建型模式之建造者模式

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

一、代码示例:

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

二、小结:

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

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

推荐阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,116评论 1 15
  • 建造者模式 想象一下,我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。只有当各个部分都创建...
    英武阅读 1,648评论 1 50
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 158,579评论 24 689
  • 记录结构: 1.前言 没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整...
    markfork阅读 416评论 0 4
  • Chpater16慷慨 中午,向晚下了班,就赶紧赶去新房。今天开始进木工,她想了解,木工活是怎样干的。上楼进屋,她...
    冬妮娅阅读 153评论 1 0