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之入门(二)基本数据类型
May 25 Python
python实现矩阵乘法的方法
Jun 28 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
java判断三位数的实例讲解
Jun 10 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
用Python绘制漫步图实例讲解
Feb 26 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python实现邮件循环自动发件功能
Sep 11 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 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
正则表达式语法
2006/10/09 Javascript
PHP生成静态页面详解
2006/11/19 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
详解node中创建服务进程
2017/05/09 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python引用计数操作示例
2018/08/23 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
python 如何设置守护进程
2020/10/29 Python
python time()的实例用法
2020/11/03 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
公司业务员岗位职责
2014/03/18 职场文书
个人函授自我鉴定
2014/03/25 职场文书
廉政承诺书2015
2015/04/28 职场文书