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 29 Python
Python中super的用法实例
May 28 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python print 按逗号或空格分隔的方法
May 02 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
安装docker-compose的两种最简方法
Jul 30 Python
python打印异常信息的两种实现方式
Dec 24 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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
关于js与php互相传值的介绍
2013/06/25 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
js如何获取兄弟、父类等节点
2014/01/06 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
大学生预备党员自我评价分享
2013/11/16 职场文书
历史系自荐信范文
2013/12/24 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
2015年路政工作总结
2015/05/22 职场文书
php 原生分页
2021/04/01 PHP