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类属性与实例属性用法分析
May 09 Python
python Django模板的使用方法
Jan 14 Python
详解Python3注释知识点
Feb 19 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
python调用动态链接库的基本过程详解
Jun 19 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
详解非极大值抑制算法之Python实现
Jun 28 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
php中explode函数用法分析
2014/11/15 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Django实现学生管理系统
2019/02/26 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
化工机械应届生求职信
2013/11/04 职场文书
专家推荐信范文
2015/03/26 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers