Python设计模式之工厂模式简单示例


Posted in Python onJanuary 09, 2018

本文实例讲述了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相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python多线程编程方式分析示例详解
Dec 06 Python
Python实现的排列组合计算操作示例
Oct 13 Python
python爬虫使用cookie登录详解
Dec 27 Python
python 通过 socket 发送文件的实例代码
Aug 14 Python
python生成n个元素的全组合方法
Nov 13 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
python实现对输入的密文加密
Mar 20 Python
Python2和Python3的共存和切换使用
Apr 12 Python
python实现微信自动回复机器人功能
Jul 11 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
python 基于opencv操作摄像头
Dec 24 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
浅谈numpy库的常用基本操作方法
Jan 09 #Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 #Python
浅谈Python2获取中文文件名的编码问题
Jan 09 #Python
在CentOS6上安装Python2.7的解决方法
Jan 09 #Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 #Python
用tensorflow实现弹性网络回归算法
Jan 09 #Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 #Python
You might like
PHP抓取及分析网页的方法详解
2016/04/26 PHP
php7下的filesize函数
2019/09/30 PHP
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python re模块介绍
2014/11/30 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python抽象基类用法实例分析
2015/06/04 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python 专题四 文件基础知识
2017/03/20 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python skimage 连通性区域检测方法
2018/06/21 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python中return如何写
2020/06/18 Python
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
质量标语大全
2014/06/12 职场文书
旷课检讨书范文
2014/10/30 职场文书
离婚案件被告代理词
2015/05/23 职场文书
仙境之桥观后感
2015/06/16 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
python如何进行基准测试
2021/04/26 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android