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的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
python实现人民币大写转换
Jun 20 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
Python递归调用实现数字累加的代码
Feb 25 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
django queryset 去重 .distinct()说明
May 19 Python
如何理解python对象
Jun 21 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
python实现发送带附件的邮件代码分享
Sep 22 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
Linux编译升级php的详细方法
2013/11/04 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
Js中sort()方法的用法
2006/11/04 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
javascript 闭包
2011/09/15 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
React中上传图片到七牛的示例代码
2017/10/10 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
会计主管岗位职责范文
2013/11/08 职场文书
高三学生评语大全
2014/04/25 职场文书
超市商业计划书
2014/05/04 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
员工安全责任书范本
2014/07/24 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
仓库管理制度范本
2015/08/04 职场文书