python模式 工厂模式原理及实例详解


Posted in Python onFebruary 11, 2020

这篇文章主要介绍了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操作json数据的一个简单例子
Apr 17 Python
编写简单的Python程序来判断文本的语种
Apr 07 Python
python中异常捕获方法详解
Mar 03 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
Python3搭建http服务器的实现代码
Feb 11 #Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 #Python
python线程join方法原理解析
Feb 11 #Python
使用Python求解带约束的最优化问题详解
Feb 11 #Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 #Python
使用遗传算法求二元函数的最小值
Feb 11 #Python
Python for循环搭配else常见问题解决
Feb 11 #Python
You might like
PHP生成sitemap.xml地图函数
2013/11/13 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
php实现简单四则运算器
2020/11/29 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
javascript时间差插件分享
2016/07/18 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
python连接oracle数据库实例
2014/10/17 Python
Python中int()函数的用法浅析
2017/10/17 Python
详解python eval函数的妙用
2017/11/16 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
Python使用Matlab命令过程解析
2020/06/04 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
教师个人剖析材料
2014/02/05 职场文书
建筑安全标语
2014/06/07 职场文书
机械工程师岗位职责
2014/06/16 职场文书
护士旷工检讨书
2015/08/15 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书