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类的多重继承问题深入分析
Nov 09 Python
全面了解python字符串和字典
Jul 07 Python
pycharm远程调试openstack代码
Nov 21 Python
解析python实现Lasso回归
Sep 11 Python
详解Django配置优化方法
Nov 18 Python
Python StringIO如何在内存中读写str
Jan 07 Python
Python JSON编解码方式原理详解
Jan 20 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
python GUI计算器的实现
Oct 09 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
Python之matplotlib绘制折线图
Apr 13 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之PHP语法学习笔记1
2006/12/17 PHP
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
PHP队列用法实例
2014/11/05 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
javascript回调函数详解
2018/02/06 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
用vue写一个日历
2020/11/02 Javascript
Python守护进程(daemon)代码实例
2015/03/06 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
对python判断是否回文数的实例详解
2019/02/08 Python
Django stark组件使用及原理详解
2019/08/22 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
Python 日期与时间转换的方法
2020/08/01 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
输入N,打印N*N矩阵
2012/02/20 面试题
葡萄牙语专业个人求职信
2013/12/10 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
快递员岗位职责
2014/09/12 职场文书
工作检讨书500字
2014/10/19 职场文书
运动会开幕词
2015/01/28 职场文书
辞职信范文大全
2015/03/02 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL