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标准库内置函数complex介绍
Nov 25 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python变量作用范围实例分析
Jul 07 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
python实现n个数中选出m个数的方法
Nov 13 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
python代码实现图书管理系统
Nov 30 Python
只用Python就可以制作的简单词云
Jun 07 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
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
Add a Table to a Word Document
2007/06/15 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python发布模块的步骤分享
2014/02/21 Python
django允许外部访问的实例讲解
2018/05/14 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
this关键字的作用
2016/01/30 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
小学教师师德承诺书
2014/05/23 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
债务纠纷代理词
2015/05/25 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
《藏戏》教学反思
2016/02/23 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
全网非常详细的pytest配置文件
2022/07/15 Python