美文网首页
python 创建者模式

python 创建者模式

作者: 遗步看风景 | 来源:发表于2019-11-10 22:01 被阅读0次

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

相关模式:思路和模板方法模式很像,模板方法是封装算法流程,对某些细节,提供接口由子类修改,建造者模式更为高层一点,将所有细节都交由子类实现

一个例子更能很好的理解以上的内容:

  1. 有一个接口类,定义创建对象的方法。一个指挥员类,接受创造者对象为参数。两个创造者类,创建对象方法相同,内部创建可自定义

2.一个指挥员,两个创造者(瘦子 胖子),指挥员可以指定由哪个创造者来创造

from abc import ABCMeta, abstractmethod


class Builder():
    __metaclass__ = ABCMeta

    @abstractmethod
    def draw_left_arm(self):
        pass

    @abstractmethod
    def draw_right_arm(self):
        pass

    @abstractmethod
    def draw_left_foot(self):
        pass

    @abstractmethod
    def draw_right_foot(self):
        pass

    @abstractmethod
    def draw_head(self):
        pass

    @abstractmethod
    def draw_body(self):
        pass


class Thin(Builder):
    def draw_left_arm(self):
        print '画左手'

    def draw_right_arm(self):
        print '画右手'

    def draw_left_foot(self):
        print '画左脚'

    def draw_right_foot(self):
        print '画右脚'

    def draw_head(self):
        print '画头'

    def draw_body(self):
        print '画瘦身体'


class Fat(Builder):
    def draw_left_arm(self):
        print '画左手'

    def draw_right_arm(self):
        print '画右手'

    def draw_left_foot(self):
        print '画左脚'

    def draw_right_foot(self):
        print '画右脚'

    def draw_head(self):
        print '画头'

    def draw_body(self):
        print '画胖身体'


class Director():
    def __init__(self, person):
        self.person=person

    def draw(self):
        self.person.draw_left_arm()
        self.person.draw_right_arm()
        self.person.draw_left_foot()
        self.person.draw_right_foot()
        self.person.draw_head()
        self.person.draw_body()


if __name__=='__main__':
    thin=Thin()
    fat=Fat()
    director_thin=Director(thin)
    director_thin.draw()
    director_fat=Director(fat)
    director_fat.draw()

相关文章

  • python 创建者模式

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 相关模式:思路和模板方法模式很像,模板...

  • 从Zero到Hero,一文掌握Python关键代码

    首先,什么是 Python?根据 Python 创建者 Guido van Rossum 所言,Python 是一...

  • OkHttp的使用之设计模式

    使用的设计模式有: 创建者模式 策略模式 门面模式 责任链模式

  • 2. 设计模式与架构

    一、 设计模式 创建型模式抽象工厂模式(AbstractFactory)、工厂模式(Factory)、创建者模式(...

  • 创建者模式

    1.工厂模式 给登录模块做一些基础功能 需求1:登录模块名称不符合要求的警示框 需求2:密码也要这样的警示框 需求...

  • 创建者模式

    模式定义 将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。 模式结构 Builder:生...

  • 创建者模式

    创建者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。隐藏了复杂对象的创建过程...

  • 创建型模式-创建者模式

    创建者模式是为了创建复杂对象而存在的最佳实践模式.突然想到工作中,使用的新建创意这个功能,感觉可以用创建者模式去组...

  • 工厂模式(创建者模式)

    定义 :定义一个用于创建对象的接口,让子类决定实例化哪个类。使用场景: 任何需要生成复杂对象的地方 Android...

  • Builder Pattern

    创建者模式 定义 Builder design pattern is an alternative way to ...

网友评论

      本文标题:python 创建者模式

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