Python设计模式之工厂模式简单示例


Posted in Python onJanuary 09, 2018

本文实例讲述了Python设计模式之工厂模式。分享给大家供大家参考,具体如下:

工厂模式是一个在软件开发中用来创建对象的设计模式。

工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。

为了实现此方法,需要创建一个工厂类创建并返回。

当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。

简短的说,当以下情形可以使用工厂模式:

1.不知道用户想要创建什么样的对象
2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。

一个例子更能很好的理解以上的内容:

① 我们有一个基类Person ,包涵获取名字,性别的方法 。有两个子类male 和female,可以打招呼。还有一个工厂类。
② 工厂类有一个方法名getPerson有两个输入参数,名字和性别。
③ 用户使用工厂类,通过调用getPerson方法。

在程序运行期间,用户传递性别给工厂,工厂创建一个与性别有关的对象。因此工厂类在运行期,决定了哪个对象应该被创建。

class Person:
  def __init__(self):
    self.name = None
    self.gender = None
  def getName(self):
    return self.name
  def getGender(self):
    return self.gender
class Male(Person):
  def __init__(self, name):
    print "Hello Mr." + name
class Female(Person):
  def __init__(self, name):
    print "Hello Miss." + name
class Factory:
  def getPerson(self, name, gender):
    if gender == 'M':
      return Male(name)
    if gender == 'F':
      return Female(name)
if __name__ == '__main__':
  factory = Factory()
  person = factory.getPerson("Chetan", "M")

运行结果:

Python设计模式之工厂模式简单示例

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

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

Python 相关文章推荐
全面解读Python Web开发框架Django
Jun 30 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python编程实现归并排序
Apr 14 Python
python绘制简单折线图代码示例
Dec 19 Python
对Python中的@classmethod用法详解
Apr 21 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
Python 多维List创建的问题小结
Jan 18 Python
django-allauth入门学习和使用详解
Jul 03 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
浅谈numpy库的常用基本操作方法
Jan 09 #Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 #Python
浅谈Python2获取中文文件名的编码问题
Jan 09 #Python
在CentOS6上安装Python2.7的解决方法
Jan 09 #Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 #Python
用tensorflow实现弹性网络回归算法
Jan 09 #Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 #Python
You might like
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
Django如何使用redis作为缓存
2020/05/21 Python
python re模块常见用法例举
2021/03/01 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
小学毕业感言300字
2014/02/19 职场文书
出纳担保书范文
2014/04/02 职场文书
班组建设经验交流材料
2014/05/12 职场文书
信访维稳工作汇报
2014/10/27 职场文书
2015年招聘工作总结
2014/12/12 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
银行求职自荐信范文
2015/03/04 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
Python实现单例模式的5种方法
2021/06/15 Python