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 05 Python
Python星号*与**用法分析
Feb 02 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
Python 加密与解密小结
Dec 06 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
python中bytes和str类型的区别
Oct 21 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
简单了解Django项目应用创建过程
Jul 06 Python
Pycharm github配置实现过程图解
Oct 13 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
js工具方法弹出蒙版
2013/05/08 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
python发腾讯微博代码分享
2014/01/10 Python
python解析xml模块封装代码
2014/02/07 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
跟老齐学Python之变量和参数
2014/10/10 Python
Python进程间通信用法实例
2015/06/04 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
干部个人对照检查材料
2014/08/25 职场文书
买房协议书范本
2014/10/23 职场文书
内勤岗位职责
2015/02/10 职场文书