Python设计模式之工厂方法模式实例详解


Posted in Python onJanuary 18, 2019

本文实例讲述了Python设计模式之工厂方法模式。分享给大家供大家参考,具体如下:

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——工厂方法模式
工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延时到其子类.
工厂方法模式克服了简单工厂模式违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点
场景:雷锋工厂,不关心执行者,只关心执行结果
"""
class LeiFeng(object):
  def Sweep(self):
    print "扫地"
  def Wash(self):
    print "洗衣"
  def BuyRice(self):
    print "买米"
class IFactory(LeiFeng):
  def CreateLeiFeng(self):
    pass
#大学生
class Undergraduate(LeiFeng):
  pass
#新增社区服务者
class Volunteer(LeiFeng):
  pass
# 学习雷锋的大学生工厂
class UndergraduateFactory(IFactory):
  def CreateLeiFeng(self):
    return Undergraduate()
#新增一个社区服务者的工厂e
class VolunteerFactory(IFactory):
  def CreateLeiFeng(self):
    return Volunteer()
if __name__ == "__main__":
  student = UndergraduateFactory()
  volunteer = VolunteerFactory()
  student.BuyRice()
  student.Sweep()
  volunteer.Wash()

运行结果:

买米
扫地
洗衣

上面类的设计如下图:

Python设计模式之工厂方法模式实例详解

创建一个抽象工厂类CreateLeiFeng和一个抽象对象类LeiFeng,当创建具体leifeng对象-Undergradiate去dosomething时,使用继承抽象工厂的UndergraduateFactory工厂类,该类返回一个Undergradiate实例,如果还要去做另一个dosomething时,再创建一个VolunteerFactory工厂方法创建创建一个Volunteer实例就可以了

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

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

Python 相关文章推荐
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
pygame实现弹力球及其变速效果
Jul 03 Python
selenium+python实现自动化登录的方法
Sep 04 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
python GUI模拟实现计算器
Jun 22 Python
python 提取html文本的方法
May 20 Python
Python Matplotlib库实现画局部图
Nov 17 Python
Python设计模式之原型模式实例详解
Jan 18 #Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 #Python
Python中logging实例讲解
Jan 17 #Python
python矩阵/字典实现最短路径算法
Jan 17 #Python
python实现Dijkstra静态寻路算法
Jan 17 #Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 #Python
python实现dijkstra最短路由算法
Jan 17 #Python
You might like
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
js实现搜索栏效果
2018/11/16 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python操作kafka实践的示例代码
2019/06/19 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
优秀教师推荐材料
2014/12/16 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
浅谈Python响应式类库RxPy
2021/06/14 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP