1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3.  
  4. #建造者基类
  5. class PersonBuilder():
  6. def BuildHead(self):
  7. pass
  8.  
  9. def BuildBody(self):
  10. pass
  11.  
  12. def BuildArm(self):
  13. pass
  14.  
  15. def BuildLeg(self):
  16. pass
  17.  
  18. #胖子
  19. class PersonFatBuilder(PersonBuilder):
  20. type = u'胖子'
  21. def BuildHead(self):
  22. print u'构建%s的头' % self.type
  23.  
  24. def BuildBody(self):
  25. print u'构建%s的身体' % self.type
  26.  
  27. def BuildArm(self):
  28. print u'构建%s的手' % self.type
  29.  
  30. def BuildLeg(self):
  31. print u'构建%s的脚' % self.type
  32.  
  33. #瘦子
  34. class PersonThinBuilder(PersonBuilder):
  35. type = u'瘦子'
  36. def BuildHead(self):
  37. print u'构建%s的头' % self.type
  38.  
  39. def BuildBody(self):
  40. print u'构建%s的身体' % self.type
  41.  
  42. def BuildArm(self):
  43. print u'构建%s的手' % self.type
  44.  
  45. def BuildLeg(self):
  46. print u'构建%s的脚' % self.type
  47.  
  48. #指挥者
  49. class PersonDirector():
  50. pb = None;
  51. def __init__(self, pb):
  52. self.pb = pb
  53.  
  54. def CreatePereson(self):
  55. self.pb.BuildHead()
  56. self.pb.BuildBody()
  57. self.pb.BuildArm()
  58. self.pb.BuildLeg()
  59.  
  60. def clientUI():
  61. pb = PersonThinBuilder()
  62. pd = PersonDirector(pb)
  63. pd.CreatePereson()
  64.  
  65. pb = PersonFatBuilder()
  66. pd = PersonDirector(pb)
  67. pd.CreatePereson()
  68. return
  69.  
  70. if __name__ == '__main__':
  71. clientUI();

Python_建造者模式的更多相关文章

  1. 23种设计模式--建造者模式-Builder Pattern

    一.建造模式的介绍       建造者模式就是将零件组装成一个整体,用官方一点的话来讲就是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.生活中比如说组装电脑,汽车等等这些都是建 ...

  2. PHP设计模式(五)建造者模式(Builder For PHP)

    建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式. 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用 ...

  3. java设计模式之建造者模式

    学习了设计模式,一直感觉有进步又没有进步,与同学.同事探讨了一下.变化不可能一会就可以的,需要努力坚持.不管进步大小,也不管是否进步,做到勿忘初心,做自己喜欢的事情就好.还有几个设计模式一直没有写,原 ...

  4. 设计模式--建造者模式Builder(创建型)

    一.首先看建造者模式的UML图: 二.再来看一个建造者模式的例子 class Builder { public: virtual void BuildHead() {} virtual void Bu ...

  5. C#设计模式之建造者模式

    建造者模式可以将部件本身和它们的组装过程分开,关注如何一步步创建一个包含多个组成部分的复杂对象,用户只需要指定复杂对象的类型即可得到该对象,而无须知道其内部的具体构造细节. 建造者模式:将一个复杂对象 ...

  6. C#设计模式-建造者模式

    在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成. 例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由C ...

  7. C#设计模式系列:建造者模式(Builder)

    1.建造者模式简介 1.1>.定义 建造者模式(Builder)将复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 1.2>.使用频率 中低 1.3>.原型模式应用 ...

  8. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  9. Net设计模式实例之建造者模式(Builder Pattern)

    一.建造者模式简介(Brief Introduction) 建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示. 建造者模式的优点是 ...

随机推荐

  1. 洛谷.3437.[POI2006]TET-Tetris 3D(二维线段树)

    题目链接 下落一个d*s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵 ...

  2. Xdebug、XHProf 、OneAPM 和 SocketLog

    DevOps 生活变得美好的神器.分别是 Xdebug.XHProf .OneAPM 和 SocketLog 方法很简单,从 Xdebug 下载最新版的源代码. wget 解压: tar –zxvf  ...

  3. 面向对象&网络编程

    1 接口与归一化设计 1.1 归一化概念: 归一化的好处: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大降低了使用者的使用难度. 2.归一化使得高层的外部 ...

  4. C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现

    指针悬挂: 问题:使用new申请的内存内存空间无法访问,也无法释放. 原因:直接对指向new申请的存储空间的指针变量进行赋值修改 后果:失去了原来的地址,原来的空间无法访问也无法释放,造成内存泄漏 还 ...

  5. EasyUI学习总结(三)——easyloader源码分析(转载)

    声明:这一篇文章是转载过来的,转载地址忘记了,原作者如果看到了,希望能够告知一声,我好加上去! easyloader模块是用来加载jquery easyui的js和css文件的,而且它可以分析模块的依 ...

  6. Delphi 中big5 转 Unicode 函数

    function Big5ToUnicode(str Char): widestring; var len: integer; begin len:=MultiByteToWideChar(,,PCh ...

  7. 使用别名访问MSSQL Express

    当MSSQL Express安装成功后,默认只能用 .\sqlexpress 或者 (local)\sqlexpress 有时候我们希望使用(local) 就可以访问,此时就可以利用别名 1.MSSQ ...

  8. redis简记

    redis学习笔记 http://doc.redisfans.com/ 键空间通知(keyspace notification) 键空间通知,客户端可以通过订阅频道或者模式来接收redis改动的数据集 ...

  9. 异常 try catch finally return 执行关系 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. jquery操作radio,checkbox

    1. 获取radio选中的value. $('input:radio[name=sex]:checked').val(); 2. 选择 radio 按钮 (Male). $('input:radio[ ...