Python设计模式之建造者模式实例详解


Posted in Python onJanuary 17, 2019

本文实例讲述了Python设计模式之建造者模式。分享给大家供大家参考,具体如下:

建造者模式(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()

运行结果:

瘦子的头
瘦子的身体
瘦子的手
瘦子的脚
胖子的头
胖子的身体
胖子的手
胖子的脚

上面类的设计如下图:

Python设计模式之建造者模式实例详解

指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
轻松掌握python设计模式之策略模式
Nov 18 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Python学习思维导图(必看篇)
Jun 26 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python实现多进程通信实例分析
Sep 01 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
基于Python实现签到脚本过程解析
Oct 25 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
python中四舍五入的正确打开方式
Jan 18 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 #Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 #Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 #Python
pycharm 实现显示project 选项卡的方法
Jan 17 #Python
pycharm修改界面主题颜色的方法
Jan 17 #Python
PyCharm在新窗口打开项目的方法
Jan 17 #Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 #Python
You might like
php array_flip() 删除数组重复元素
2009/01/14 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python实现把xml或xsl转换为html格式
2015/04/08 Python
Python rstrip()方法实例详解
2018/11/11 Python
python读取并写入mat文件的方法
2019/07/12 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python简易版停车管理系统
2019/08/12 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
机关门卫岗位职责
2013/12/30 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
读群众路线心得体会
2014/03/07 职场文书
车间安全生产标语
2014/06/06 职场文书
计划生育宣传标语
2014/06/21 职场文书
高三复习计划
2015/01/19 职场文书
六一儿童节致辞
2015/07/31 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书