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简单程序读取串口信息的方法
Mar 13 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
Python面向对象之继承代码详解
Jan 29 Python
新手常见6种的python报错及解决方法
Mar 09 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python中logging日志库实例详解
Feb 19 Python
树莓派升级python的具体步骤
Jul 05 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
Python可以用来做什么
Nov 23 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下载文件的代码示例
2012/06/29 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
js一组验证函数
2008/12/20 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
Python常用模块介绍
2014/11/21 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL