美文网首页
创建型设计模式 - 建造者模式

创建型设计模式 - 建造者模式

作者: 千反田爱瑠爱好者 | 来源:发表于2018-09-09 16:11 被阅读4次
  1. 建造者模式封装一个对象的构造过程,并允许按步骤构造;
  2. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;
  3. 在以下场景适用:
    i. 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
    ii. 当构造过程必须允许被构造的对象有不同的表示时.


def printInfo(info):
    print(info)


class PersonBuilder(object):  # 建造者基类
    def BuildHead(self):
        pass

    def BuildBody(self):
        pass

    def BuildArm(self):
        pass

    def BuildLeg(self):
        pass


class PersonFatBuilder(PersonBuilder):  # 胖子建造者
    type = '胖子'

    def BuildHead(self):
        printInfo("构建%s的头" % self.type)

    def BuildBody(self):
        printInfo("构建%s的身体" % self.type)

    def BuildArm(self):
        printInfo("构建%s的手" % self.type)

    def BuildLeg(self):
        printInfo("构建%s的脚" % self.type)


class PersonThinBuilder(PersonBuilder):  # 瘦子建造者
    type = '瘦子'

    def BuildHead(self):
        printInfo("构建%s的头" % self.type)

    def BuildBody(self):
        printInfo("构建%s的身体" % self.type)

    def BuildArm(self):
        printInfo("构建%s的手" % self.type)

    def BuildLeg(self):
        printInfo("构建%s的脚" % self.type)


class PersonDirector(object):  # 指挥者(指挥建造者创建人的实例)
    pb = None

    def __init__(self, pb):
        self.pb = pb

    def CreatePereson(self):
        self.pb.BuildHead()
        self.pb.BuildBody()
        self.pb.BuildArm()
        self.pb.BuildLeg()


if __name__ == '__main__':
    pb = PersonThinBuilder()  # 指定一个建造者
    pd = PersonDirector(pb)  # 由指挥者指定建造者
    pd.CreatePereson()  # 建造者创建人的实例
    pb = PersonFatBuilder()
    pd = PersonDirector(pb)
    pd.CreatePereson()
  1. 某类产品的构建由很多复杂组件组成:如人的头、身体、手、脚;
  2. 这些组件中的某些细节不同,构建出的产品表象会略有不同:如胖子的手和瘦子的手;
  3. 通过一个指挥者按照产品的创建步骤来指挥建造者一步步执行产品的创建;
  4. 当需要创建不同的产品时,只需要派生一个具体的建造者,重写相应的组件构建方法即可:可以创建胖子和瘦子,但都是通过指挥者指导其创建过程,所以指挥者不需要修改。

相关文章

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 23天学习23种设计模式——建造者模式

    是什么——什么是建造者模式 建造者模式(Builder Pattern),是一种对象创建型设计模式。它将一个复杂对...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 手撸golang 创建型设计模式 建造者模式

    手撸golang 创建型设计模式 建造者模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • Java 设计模式(二)《建造者模式》

    博客专栏 建造者模式 类型: 创建型 难度:中级 更多设计模式小故事案例代码详解 >>点我!点我!点我!<< 设计...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

网友评论

      本文标题:创建型设计模式 - 建造者模式

      本文链接:https://www.haomeiwen.com/subject/xpcdgftx.html