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实现多线程网页下载器
Apr 15 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
Face++ API实现手势识别系统设计
Nov 21 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python中dict和set的用法讲解
Mar 28 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Python占用的内存优化教程
Jul 28 Python
Python文件操作函数用法实例详解
Dec 24 Python
Django 删除upload_to文件的步骤
Mar 30 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python如何输出警告信息
Jul 30 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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 include加载文件两种方式效率比较
2010/08/08 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
python的unittest测试类代码实例
2017/12/07 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python requests库用法实例详解
2018/08/14 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
机电专业大学生职业规划书范文
2014/02/25 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
关于python类SortedList详解
2021/09/04 Python
Python几种酷炫的进度条的方式
2022/04/11 Python