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中遍历文件的3个方法
Sep 02 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
Python基础教程之异常详解
Jan 10 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
Python基于pandas爬取网页表格数据
May 11 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python Selenium自动化获取页面信息的方法
Aug 31 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
angular2模块和共享模块详解
2018/04/08 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python标准库os库的函数介绍
2020/02/12 Python
Python可以实现栈的结构吗
2020/05/27 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
员工保密承诺书
2014/05/28 职场文书
公民授权委托书范本
2014/09/17 职场文书