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实现简单的TCP代理服务器
Oct 08 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
详解Python if-elif-else知识点
Jun 11 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
pycharm永久激活超详细教程
Oct 29 Python
python基于opencv 实现图像时钟
Jan 04 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 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
实用函数3
2007/11/08 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
python判断变量是否为列表的方法
2020/09/17 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
见习期自我鉴定
2013/11/07 职场文书
驾驶员岗位职责
2014/01/29 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
六查六看自查报告
2014/10/14 职场文书
小学家长意见怎么写
2015/06/03 职场文书
cf战队宣传语
2015/07/13 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
python如何利用traceback获取详细的异常信息
2021/06/05 Python
java多态注意项小结
2021/10/16 Java/Android
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
服务器间如何实现文件共享
2022/05/20 Servers
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技