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实现一个简单的银行转账操作
Mar 06 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
python sort、sort_index方法代码实例
Mar 28 Python
python使用sessions模拟登录淘宝的方式
Aug 16 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 Python
利用PyTorch实现VGG16教程
Jun 24 Python
python map比for循环快在哪
Sep 21 Python
python selenium 获取接口数据的实现
Dec 07 Python
Python使用Kubernetes API访问集群
May 30 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
十大“创意”战术!
2020/03/04 星际争霸
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript 撑出页面文字换行
2009/06/15 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
python的dataframe和matrix的互换方法
2018/04/11 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
Python模块future用法原理详解
2020/01/20 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
2013年员工自我评价范文
2013/12/27 职场文书
读群众路线的心得体会
2014/09/03 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis