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基础教程之udp端口扫描
Feb 10 Python
Python删除windows垃圾文件的方法
Jul 14 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
python定向爬取淘宝商品价格
Feb 27 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python 初始化一个定长的数组实例
Dec 02 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
python爬虫scrapy基本使用超详细教程
Feb 20 Python
怎么用Python识别手势数字
Jun 07 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 Python
python 判断文件或文件夹是否存在
Mar 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发送post请求的三种方法
2014/02/11 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
使用正则替换变量
2007/05/05 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
动态Axios的配置步骤详解
2018/01/12 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
JavaScript链式调用实例浅析
2018/12/19 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
详解python实现线程安全的单例模式
2018/03/05 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python装饰器语法糖
2019/01/02 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
写给女朋友的道歉信
2014/01/08 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
建议书的格式
2014/05/12 职场文书
优秀求职信
2014/05/29 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
导游词之江西赣州
2019/10/15 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Golang二维数组的使用方式
2021/05/28 Golang
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫