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中的super()方法使用简介
Aug 14 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
Python用input输入列表的实例代码
Feb 07 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
jupyter 添加不同内核的操作
Feb 06 Python
Scrapy实现模拟登录的示例代码
Feb 21 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
php 获取百度的热词数据的代码
2012/02/18 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php检测文本的编码
2015/07/26 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python小程序实现刷票功能详解
2019/07/17 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
软件设计的目标是什么
2016/12/04 面试题
大学生学年自我鉴定
2014/02/10 职场文书
学校评语大全
2014/05/06 职场文书
工厂员工辞职信范文
2015/05/12 职场文书