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

 更新时间:2019年01月18日 09:07:58   作者:Andy冉明  
这篇文章主要介绍了Python设计模式之工厂方法模式,结合实例形式较为详细的分析了工厂方法模式的概念、原理、用法及相关操作技巧,需要的朋友可以参考下

本文实例讲述了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()

运行结果:

买米
扫地
洗衣

上面类的设计如下图:

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

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

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

相关文章

  • 详解python实现邮件解析的方法

    详解python实现邮件解析的方法

    这篇文章主要为大家介绍了python实现邮件解析的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python的时间模块datetime详解

    Python的时间模块datetime详解

    本文给大家分享的是在python中的时间模块datetime的使用方法,注意事项以及简单示例,有需要的小伙伴可以参考下
    2017-04-04
  • Python字符串格式化方式

    Python字符串格式化方式

    这篇文章主要介绍了Python字符串格式化方式,字符串格式化在我们的开发过程中被广泛的应用,因此也是我们要重点掌握的内容之一,下文相关介绍,需要的朋友可以参考一下
    2022-04-04
  • python 实现在shell窗口中编写print不向屏幕输出

    python 实现在shell窗口中编写print不向屏幕输出

    这篇文章主要介绍了python 实现在shell窗口中编写print不向屏幕输出的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python 调制解调的实现

    python 调制解调的实现

    在Python中,可以使用SciPy和NumPy库来处理信号,包括进行FM信号的解调,本文主要介绍了python 调制解调的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • keras 获取某层输出 获取复用层的多次输出实例

    keras 获取某层输出 获取复用层的多次输出实例

    这篇文章主要介绍了keras 获取某层输出 获取复用层的多次输出实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 使用python爬虫获取黄金价格的核心代码

    使用python爬虫获取黄金价格的核心代码

    这篇文章主要介绍了利用python爬虫获取黄金价格,需要的朋友可以参考下
    2018-06-06
  • python执行等待程序直到第二天零点的方法

    python执行等待程序直到第二天零点的方法

    这篇文章主要介绍了python执行等待程序直到第二天零点的方法,涉及Python等待程序的实现技巧,需要的朋友可以参考下
    2015-04-04
  • Python用yield from实现异步协程爬虫的实践

    Python用yield from实现异步协程爬虫的实践

    本文主要介绍了Python用yield from实现异步协程爬虫的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • python+selenium对table表和分页处理

    python+selenium对table表和分页处理

    这篇文章主要介绍了python+selenium对table表和分页处理,文章内容只要包括bulabula2022、table表分页处理、网页table所有内容循环处理等相关内容,需要的小伙伴可以参考一下
    2022-01-01

最新评论