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实现问号表达式(?)的方法
Nov 27 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
使用python存储网页上的图片实例
May 22 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
Python自动抢红包教程详解
Jun 11 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python中什么是面向对象
Jun 11 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
如何用用Python将地址标记在地图上
Feb 07 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
YII模块实现绑定二级域名的方法
2014/07/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
JavaScript实现旋转轮播图
2020/08/18 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
用Django实现一个可运行的区块链应用
2018/03/08 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
小学音乐教学反思
2014/02/05 职场文书
领导接待方案
2014/03/13 职场文书
大学生社团活动总结
2014/04/26 职场文书
新书发布会策划方案
2014/06/09 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
小学教育见习总结
2015/06/23 职场文书
董事会决议范本
2015/07/01 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书