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网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
详解Django中的form库的使用
Jul 18 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 Python
python多线程方法详解
Jan 18 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
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
js友好的时间返回函数
2016/08/24 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
基于python 字符编码的理解
2017/09/02 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
如何使用Python调整图像大小
2020/09/26 Python
学生个人求职自荐信格式
2013/09/23 职场文书
会计助理岗位职责
2014/02/17 职场文书
海飞丝的广告词
2014/03/20 职场文书
代理协议书
2014/04/22 职场文书
高中生班主任评语
2014/04/25 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL