Python设计模式之建造者模式实例详解

 更新时间:2019年01月17日 11:27:57   作者:Andy冉明  
这篇文章主要介绍了Python设计模式之建造者模式,简单说明了建造者模式的概念、原理,并结合实例形式分析了Python定义及使用建造者模式相关操作技巧,需要的朋友可以参考下

本文实例讲述了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()

运行结果:

瘦子的头
瘦子的身体
瘦子的手
瘦子的脚
胖子的头
胖子的身体
胖子的手
胖子的脚

上面类的设计如下图:

指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python 私有属性和私有方法应用场景分析

    Python 私有属性和私有方法应用场景分析

    这篇文章主要介绍了Python 私有属性和私有方法应用场景分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python实现优雅编写LaTeX的示例代码

    Python实现优雅编写LaTeX的示例代码

    LaTeX 是一种广泛用于排版学术论文、报告、书籍和演示文稿的标记语言,本文主要为大家详细介绍了如何使用 Python 来优雅地编写 LaTeX,提高效率并减少错误,需要的可以参考下
    2024-02-02
  •  Python 匿名函数lambda 详情

     Python 匿名函数lambda 详情

    这篇文章主要介绍了 Python 匿名函数lambda,​​lambda​​​  函数返回函数本身而不是将其赋值给一个变量名。所以它也被称为匿名函数,下文更多相关内容需要的小伙伴可以参考一下
    2022-03-03
  • Python中的super用法详解

    Python中的super用法详解

    这篇文章主要介绍了Python中的super用法详解,本文讲解了关于super问题的发现与提出、走进Python的源码世界分析super的实现、延续的讨论super等内容,需要的朋友可以参考下
    2015-05-05
  • pytorch中常用的乘法运算及相关的运算符(@和*)

    pytorch中常用的乘法运算及相关的运算符(@和*)

    pytorch是深度学习框架,而深度学习其实本质就是一大堆矩阵乘法,最后用来模拟一个高维拟合函数,下面这篇文章主要给大家介绍了关于pytorch中常用的乘法运算及相关的运算符(@和*)的相关资料,需要的朋友可以参考下
    2022-01-01
  • Tensorflow轻松实现XOR运算的方式

    Tensorflow轻松实现XOR运算的方式

    今天小编就为大家分享一篇Tensorflow轻松实现XOR运算的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python操作jira添加模块的方法

    python操作jira添加模块的方法

    在开发工作中,Jira通常用作BUG管理和任务跟踪管理等,项目经理,测试人员,开发人员等在Jira上进行提交BUG,提交任务,修改任务进度等操作.本文重点给大家介绍python操作jira添加模块的方法,感兴趣的朋友一起看看吧
    2022-03-03
  • 关于sklearn包导入错误:ImportError: cannot import name Type解决方案

    关于sklearn包导入错误:ImportError: cannot import name Type解

    这篇文章主要介绍了关于sklearn包导入错误:ImportError: cannot import name‘Type‘解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 基于python的BP神经网络及异或实现过程解析

    基于python的BP神经网络及异或实现过程解析

    这篇文章主要介绍了基于python的BP神经网络及异或实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python操作xlwings的实例详解

    Python操作xlwings的实例详解

    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文将通过几个实例演示下xlwings的使用,感兴趣的可以了解一下
    2022-07-07

最新评论