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的闭包和装饰器
Feb 26 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Django如何配置mysql数据库
May 04 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Python实现AI换脸功能
Apr 10 Python
python 一维二维插值实例
Apr 22 Python
Python如何实现FTP功能
May 28 Python
Python绘制组合图的示例
Sep 18 Python
python基础入门之字典和集合
Jun 13 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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同时支持GIF、png、JPEG
2006/10/09 PHP
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
Python读取网页内容的方法
2015/07/30 Python
详解Python发送邮件实例
2016/01/10 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
代理商会议邀请函
2014/01/27 职场文书
新闻传播专业求职信
2014/07/22 职场文书
信息技术国培研修日志
2015/11/13 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
安全生产协议书
2016/03/22 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
python字符串常规操作大全
2021/05/02 Python
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript