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实现将n个点均匀地分布在球面上的方法
Mar 12 Python
Python中类型检查的详细介绍
Feb 13 Python
python和ruby,我选谁?
Sep 13 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
python判断输入日期为第几天的实例
Nov 13 Python
python3多线程知识点总结
Sep 26 Python
在pycharm中实现删除bookmark
Feb 14 Python
Python调用飞书发送消息的示例
Nov 10 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
Python list去重且保持原顺序不变的方法
Apr 03 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将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
js 浏览器事件介绍
2012/03/30 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
继电保护工岗位职责
2014/01/05 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
出生公证委托书
2014/04/03 职场文书
献爱心活动总结
2014/05/07 职场文书
大学教师个人总结
2015/02/10 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python
MYSQL常用函数介绍
2022/05/05 MySQL