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里隐藏的“禅”
Jun 16 Python
Python中Collection的使用小技巧
Aug 18 Python
进一步探究Python的装饰器的运用
May 05 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
python PyTorch预训练示例
Feb 11 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python MD5加密的示例
Oct 19 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 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
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
Python模块学习 datetime介绍
2012/08/27 Python
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
模具专业推荐信
2013/10/30 职场文书
采购文员岗位职责
2013/11/20 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
写得不错的求职信范文
2014/07/11 职场文书
教师自我剖析材料
2014/09/29 职场文书
公司周年庆典标语
2014/10/07 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书