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根据时间生成mongodb的ObjectId的方法
Mar 13 Python
Python最基本的输入输出详解
Apr 25 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
详解Python文本操作相关模块
Jun 22 Python
TensorFlow的权值更新方法
Jun 14 Python
python 提取key 为中文的json 串方法
Dec 31 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python激活Anaconda环境变量的详细步骤
Jun 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
附件名前加网站名
2008/03/23 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php的4种常见运行方式
2015/03/20 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
Django发送html邮件的方法
2015/05/26 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
softmax及python实现过程解析
2019/09/30 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
学生档案自我鉴定
2013/10/07 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
校园招聘策划书
2014/01/09 职场文书
主要领导对照检查材料
2014/08/26 职场文书
出差报告范文
2014/11/06 职场文书
外出考察学习心得体会
2016/01/18 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python