2-建造者模式

Posted dxnui119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-建造者模式相关的知识,希望对你有一定的参考价值。

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

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

 

建造者模式应该有几个关键要素:相同的流程、不同的表示、相同的建造者。也就是同一个对象在同一建造者组织下,以相同的实例化流程来达到不同的表示效果

这样的好处使得构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

#-*- coding:utf-8 -*-

#需求:画人物画,通过设计者规划画的顺序
#设计模式:面向对象,建造者模式
#定义建造模式父类,建造模式子类继承该父类
#定义建造者类,用于规划建造过程,调用建造类中的方法

class Build:
    def draw_head(self):
        pass

    def draw_body(self):
        pass

    def draw_arm(self):
        pass

    def draw_leg(self):
        pass

class Fat(Build):
    def draw_head(self):
        print(画大头)

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

    def draw_arm(self):
        print(画胖胳膊)

    def draw_leg(self):
        print(画胖腿)


class Thin(Build):
    def draw_head(self):
        print(画小头)

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

    def draw_arm(self):
        print(画瘦胳膊)

    def draw_leg(self):
        print(画瘦腿)

class Director:
    #定义一个建造者类,接收要操作的实例化对象
    def __init__(self, person):
        self.person = person

    #定义建造方法,将实例化对象要执行的操作进行顺序规划和汇总
    def draw(self):
        self.person.draw_head()
        self.person.draw_body()
        self.person.draw_arm()
        self.person.draw_leg()

fat = Fat()
director = Director(fat)
director.draw()

thin = Thin()
director = Director(thin)
director.draw()

结果:

画大头
画胖身体
画胖胳膊
画胖腿
画小头
画瘦身体
画瘦胳膊
画瘦腿

以上是关于2-建造者模式的主要内容,如果未能解决你的问题,请参考以下文章

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

《设计模式》之建造者模式(Builder)

建造者模式

建造者模式

设计模式之建造者模式

6.建造者模式