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 相关文章推荐
安装dbus-python的简要教程
May 05 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
Python生成随机验证码的两种方法
Dec 22 Python
详解django.contirb.auth-认证
Jul 16 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
PyCharm配置mongo插件的方法
Nov 30 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
python encrypt 实现AES加密的实例详解
Feb 20 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
python使用yaml 管理selenium元素的示例
Dec 01 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 设计模式之 单例模式
2008/12/19 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
Symfony查询方法实例小结
2017/06/28 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
python字符串,数值计算
2016/10/05 Python
图解Python变量与赋值
2018/04/03 Python
通过实例解析Python调用json模块
2019/12/11 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
EJB与JAVA BEAN的区别
2016/08/29 面试题
期末总结的个人自我评价
2013/11/02 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
交通事故委托书范本
2014/09/28 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
工商行政处罚决定书
2015/06/24 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android