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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
python实现linux服务器批量修改密码并生成execl
Apr 22 Python
简述Python中的面向对象编程的概念
Apr 27 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
分享几道你可能遇到的python面试题
Jul 24 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 Python
Python实现的简单读写csv文件操作示例
Jul 12 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
python 实现图片特效处理
Apr 03 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
js+html实现周岁年龄计算器
2019/06/25 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
小程序实现密码输入框
2020/11/16 Javascript
Python学习资料
2007/02/08 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
幼师求职自荐信
2014/05/31 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
维稳工作情况汇报
2014/10/27 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书