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的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python logging日志模块的详解
Oct 29 Python
python实现按长宽比缩放图片
Jun 07 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
python实现浪漫的烟花秀
Jan 30 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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模板引擎SMARTY
2006/10/09 PHP
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
php mssql 时间格式问题
2009/01/13 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Python实现上下班抢个顺风单脚本
2018/02/07 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python对XML文件的操作实现代码
2020/03/27 Python
园林设计师自荐信
2013/11/18 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
会计工作总结范文2014
2014/12/23 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
教学副校长工作总结
2015/08/13 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript