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编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Python实现的双色球生成功能示例
Dec 18 Python
python去除扩展名的实例讲解
Apr 23 Python
PyQt5 pyqt多线程操作入门
May 05 Python
Python零基础入门学习之输入与输出
Apr 03 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
python绘制直方图和密度图的实例
Jul 08 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
使用TFRecord存取多个数据案例
Feb 17 Python
python 基于卡方值分箱算法的实现示例
Jul 17 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中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
js常用排序实现代码
2010/12/28 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
js实现搜索栏效果
2018/11/16 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
Python使用py2exe打包程序介绍
2014/11/20 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python 日期排序的实例代码
2019/07/11 Python
python获取Pandas列名的几种方法
2019/08/07 Python
python区分不同数据类型的方法
2019/10/14 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
三严三实对照检查材料范文
2014/09/23 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
培训后的感想
2015/08/07 职场文书