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中dictionary items()系列函数的用法实例
Aug 21 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Django 路由控制的实现代码
Nov 08 Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 Python
django实现用户注册实例讲解
Oct 30 Python
使用 Python 写一个简易的抽奖程序
Dec 08 Python
Python基于pandas爬取网页表格数据
May 11 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
解决Python安装cryptography报错问题
Sep 03 Python
用python对excel查重
Dec 07 Python
python实现商品进销存管理系统
May 30 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程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
python聊天程序实例代码分享
2013/11/18 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
手机促销活动方案
2014/02/05 职场文书
培训专员岗位职责
2014/02/26 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
劳资协议书范本
2014/04/23 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
华清池导游词
2015/02/02 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
2016公司新年问候语
2015/11/11 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL