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接收多播数据的代码
Mar 01 Python
python抓取最新博客内容并生成Rss
May 17 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
Python制作词云的方法
Jan 03 Python
python适合人工智能的理由和优势
Jun 28 Python
python获取Linux发行版名称
Aug 30 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 Python
Python实战之实现康威生命游戏
Apr 26 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数据库开发知多少
2006/10/09 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
MSN消息提示类
2006/09/05 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Python中turtle库的使用实例
2019/09/09 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
公安学专业求职信
2014/07/27 职场文书
党员年度个人总结
2015/02/14 职场文书
死者家属慰问信
2015/03/24 职场文书
校园开放日新闻稿
2015/07/17 职场文书
小学班级管理心得体会
2016/01/07 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
SQL基础的查询语句
2021/11/11 MySQL