建造者模式(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

最新文章

  1. [转]jquery append 动态添加的元素事件on 不起作用的解决方案
  2. modelsim do文件仿真
  3. Java Volatile相关文章目录
  4. redis发布/订阅模式
  5. core_cm3文件函数一览
  6. 【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息
  7. Visual Studio 编辑器
  8. 通过Jasmine和Guard自动测试JavaScript
  9. Netty与网络编程
  10. c# winform Chart Pie 中若X轴数据为字符串时,#VALX取值为0
  11. pycharm仿sublime配色
  12. eclipse的安装和汉化
  13. 大臣的旅费|2013年蓝桥杯A组题解析第十题-fishers
  14. 使用ES6的reduce函数,根据key去重
  15. Android中Handler引起的内存泄露
  16. Android 4.0的图形硬件加速及绘制技巧
  17. 为什么选用 React 创建混合型移动应用?
  18. kerberos认证协议分析
  19. 【BZOJ5099】[POI2018]Pionek 几何+双指针
  20. leetcode513

热门文章

  1. kvm与xen虚拟化的比较(转)
  2. Xml之Schema XSD约束{详细}
  3. 最全各种系统版本的XPosed框架资料下载整理
  4. 【UOJ#242】【UR#16】破坏蛋糕(计算几何)
  5. MongoDB系列---集合与文档操作03
  6. Java开发桌面程序学习(八)——启动浏览器或者打开资源管理器操作与hyperlink超链接的使用
  7. java基础(12):构造方法、this、super
  8. Java生鲜电商平台-Spring Cloud微服务架构图
  9. curl smtp libcurl 邮件功能使用
  10. Linux 内存文件系统-ramfs and tmpfs