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文件操作整理汇总
Oct 21 Python
使用Python简单的实现树莓派的WEB控制
Feb 18 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
Python通用循环的构造方法实例分析
Dec 19 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Python 写了个新型冠状病毒疫情传播模拟程序
Feb 14 Python
Python requests设置代理的方法步骤
Feb 23 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
神经网络训练采用gpu设置的方式
Mar 03 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
解析PHP的session过期设置
2013/06/29 PHP
php获取域名的google收录示例
2014/03/24 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
python中使用psutil查看内存占用的情况
2018/06/11 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
质检部部长职责
2013/12/16 职场文书
联谊活动策划书
2014/01/26 职场文书
中青班党性分析材料
2014/02/16 职场文书
商场父亲节活动方案
2014/08/27 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
运动会入场词
2015/07/18 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
MySql开发之自动同步表结构
2021/05/28 MySQL