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自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
Python高级property属性用法实例分析
Nov 19 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
python打印异常信息的两种实现方式
Dec 24 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Python之qq自动发消息的示例代码
Feb 18 Python
python百行代码实现汉服圈图片爬取
Nov 23 Python
python index() 与 rindex() 方法的使用示例详解
Dec 24 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
正则表达式语法
2006/10/09 Javascript
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
php数组转成json格式的方法
2015/03/09 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
php array_map()函数实例用法
2021/03/03 PHP
javascript下function声明一些小结
2007/12/28 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python读取word文档的方法
2015/05/09 Python
python监控文件并且发送告警邮件
2018/06/21 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
医院院务公开实施方案
2014/05/03 职场文书
建筑安全生产责任书
2014/07/22 职场文书
工程款申请报告
2015/05/15 职场文书
撤诉状格式范本
2015/05/19 职场文书
党小组意见范文
2015/06/08 职场文书
重阳节主题班会
2015/08/17 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android