博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python设计模式(二):建造者模式
阅读量:5937 次
发布时间:2019-06-19

本文共 1394 字,大约阅读时间需要 4 分钟。

建造者,顾名思义是修建建筑的工人,按照基本的施工方式:打桩-浇筑框架-砌墙-装修,同样的施工流程却能造就千差万别的建筑,因为不同的材料、不同设计,可以表现出千差万别,这就是建造者模式的简要理解。

示例代码:

# -*- coding:utf-8 -*- class Builder():     """建造流程:原料—施工"""     def __init__(self):         self.materiel = None         self.design = None     def run(self):         print('修建完工!设计建筑: %s | 购买原料: %s' % (self.design, self.materiel)) class A(Builder):     """方案A,修建毛坯房"""     def get_materiel(self):         self.materiel = "砖瓦"     def get_design(self):         self.design = "毛坯房" class B(Builder):     """方案B,修建写字楼"""     def get_materiel(self):         self.materiel = "玻璃"     def get_design(self):         self.design = "写字楼" class Director:     """调度:买原料-组织施工"""     def __init__(self):         self.programme = None     def build(self):         self.programme.get_materiel()         print("购买原料:{}".format(self.programme.materiel))         self.programme.get_design()         print("设计方案:{}".format(self.programme.design))         self.programme.run() if __name__ == '__main__':     # 修建毛坯房     test = Director()     test.programme = A()     test.build()     # 修建写字楼     test = Director()     test.programme = B()     test.build() ---------------------------- 购买原料:砖瓦 设计方案:毛坯房 修建完工!设计建筑: 毛坯房 | 购买原料: 砖瓦 购买原料:玻璃 设计方案:写字楼 修建完工!设计建筑: 写字楼 | 购买原料: 玻璃

上面是一个很简单直白的例子,建造者模式应该有几个关键要素:相同的流程、不同的表示、修建者。也就是同一个对象(建筑)在同一修建者组织下,以相同的实例化流程(施工流程)来达到不同的表示效果(毛坯、写字楼)

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

2019-03-12-17_40_10.png

转载地址:http://oittx.baihongyu.com/

你可能感兴趣的文章
【文文殿下】[BZOJ4008] [HNOI2015] 亚瑟王
查看>>
31.图片放大镜插件——jqzoom
查看>>
安装MySQL时,出现的1067问题详解
查看>>
【Gamma】Scrum Meeting 6
查看>>
WindowsForm 增 删 查 改
查看>>
为页内的tab添加的iframe添加加载动画过渡效果
查看>>
P1067 多项式输出 (模拟)
查看>>
javap使用
查看>>
php gettext
查看>>
Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
查看>>
练习方法--刻意练习
查看>>
多进程
查看>>
Java方式 MySQL数据库连接
查看>>
MATLAB2012 licence失效解决方法
查看>>
Android ListView初始化将实例化多少个item
查看>>
[LeetCode] Factorial Trailing Zeroes 阶乘末尾0
查看>>
消除字号标签<h1><h2><h3>的自动换行
查看>>
关于ListView的一些不常用到的属性
查看>>
201521123040《Java程序设计》第13周学习总结
查看>>
Mybatis的分页插件com.github.pagehelper
查看>>