大话设计模式Python实现-建造者模式
2024-09-08 12:50:06
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
下面是一个建造者模式的demo
#!/usr/bin/env python
# -*- coding:utf-8 -*- __author__ = 'Andy' """
大话设计模式
设计模式——建造者模式
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以常见不同的表示
特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Product
"""
import abc
class Builder(object):
__metaclass__ = abc.ABCMeta @abc.abstractmethod
def create_header(self):
pass @abc.abstractmethod
def create_body(self):
pass @abc.abstractmethod
def create_hand(self):
pass @abc.abstractmethod
def create_foot(self):
pass class Thin(Builder): def create_header(self):
print '瘦子的头' def create_body(self):
print '瘦子的身体' def create_hand(self):
print '瘦子的手' def create_foot(self):
print '瘦子的脚' class Fat(Builder): def create_header(self):
print '胖子的头' def create_body(self):
print '胖子的身体' def create_hand(self):
print '胖子的手' def create_foot(self):
print '胖子的脚' class Director(object): def __init__(self, person):
self.person = person def create_preson(self):
self.person.create_header()
self.person.create_body()
self.person.create_hand()
self.person.create_foot() if __name__=="__main__":
thin = Thin()
fat = Fat()
director_thin = Director(thin)
director_fat = Director(fat)
director_thin.create_preson()
director_fat.create_preson()
上面类的设计如下图:
指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的
作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
最新文章
- [转]jquery append 动态添加的元素事件on 不起作用的解决方案
- modelsim do文件仿真
- Java Volatile相关文章目录
- redis发布/订阅模式
- core_cm3文件函数一览
- 【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息
- Visual Studio 编辑器
- 通过Jasmine和Guard自动测试JavaScript
- Netty与网络编程
- c# winform Chart Pie 中若X轴数据为字符串时,#VALX取值为0
- pycharm仿sublime配色
- eclipse的安装和汉化
- 大臣的旅费|2013年蓝桥杯A组题解析第十题-fishers
- 使用ES6的reduce函数,根据key去重
- Android中Handler引起的内存泄露
- Android 4.0的图形硬件加速及绘制技巧
- 为什么选用 React 创建混合型移动应用?
- kerberos认证协议分析
- 【BZOJ5099】[POI2018]Pionek 几何+双指针
- leetcode513
热门文章
- kvm与xen虚拟化的比较(转)
- Xml之Schema XSD约束{详细}
- 最全各种系统版本的XPosed框架资料下载整理
- 【UOJ#242】【UR#16】破坏蛋糕(计算几何)
- MongoDB系列---集合与文档操作03
- Java开发桌面程序学习(八)——启动浏览器或者打开资源管理器操作与hyperlink超链接的使用
- java基础(12):构造方法、this、super
- Java生鲜电商平台-Spring Cloud微服务架构图
- curl smtp libcurl 邮件功能使用
- Linux 内存文件系统-ramfs and tmpfs