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动态加载包的方法小结
Apr 18 Python
python中set常用操作汇总
Jun 30 Python
简单谈谈python中的多进程
Nov 06 Python
Python实现选择排序
Jun 04 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 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根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
javascript 实现map集合
2015/04/03 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
js实现日历的简单算法
2017/01/24 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
python3爬取数据至mysql的方法
2018/06/26 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
团日活动总结怎么写
2014/06/25 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年教师节寄语
2014/08/11 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
质量保证书怎么写
2015/02/27 职场文书
出国留学单位推荐信
2015/03/26 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB