码迷,mamicode.com
首页 > 其他好文 > 详细

2-建造者模式

时间:2019-11-25 20:18:03      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:elf   rect   模板方法   实现   span   就是   将实例   相关   init   

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

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

 

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

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

#-*- 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-建造者模式

标签:elf   rect   模板方法   实现   span   就是   将实例   相关   init   

原文地址:https://www.cnblogs.com/dxnui119/p/11930050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!