美文网首页
Python语言实现工厂方法设计模式

Python语言实现工厂方法设计模式

作者: shu_ke | 来源:发表于2018-10-10 17:27 被阅读19次

Python语言实现工厂方法设计模式

根据软件设计原则中开放封闭原则的指导思想, 一个类写好后,尽量不要修改里面的内容, 而是通过添加新的继承应对变化, 简单工厂不符合这个设计原则, 所以本篇文章将使用伪代码介绍工厂方法设计模式的使用

背景: 现公司监控系统报警需要对接企业微信公众号, 由于未认证企业微信推送消息的限制, 默认每天推送条数上限为6000条, 考虑到报警系统多, 规则没有收敛, 接收的人员多, 每天6000条可能不够用, 所以需要创建多个未认证的企业微信账号用于发送报警信息. 我们将以此需求为背景, 演示工厂方法的设计模式

class WeChat:

    def send_message(self, content):
        pass

    def send_image(self, imageid):
        pass


class AccountA(WeChat):

    def send_message(self, content):
        print("使用企业微信账号A推送信息: ", content)

    def send_image(self, imageid):
        print("使用企业微信账号A推送图片: ", imageid)


class AccountB(WeChat):

    def send_message(self, content):
        print("使用企业微信账号B推送信息: ", content)

    def send_image(self, imageid):
        print("使用企业微信账号B推送图片: ", imageid)


class WeChatFactory:

    def create_wechat(self):
        pass


class AccountAFactory(WeChatFactory):

    def create_wechat(self):
        return AccountA()


class AccountBFactory(WeChatFactory):

    def create_wechat(self):
        return AccountB()


if __name__ == "__main__":
    # 实例化账号A
    wechat_factory_a = AccountAFactory()
    # 创建账号A的微信对象
    wechat1 = wechat_factory_a.create_wechat()
    wechat2 = wechat_factory_a.create_wechat()
    wechat3 = wechat_factory_a.create_wechat()
    # 使用账号A对象发送信息
    wechat1.send_message(content="haha")
    wechat2.send_message(content="hehe")
    wechat3.send_message(content="xixi")

    # 实例化账号B
    wechat_factory_b = AccountBFactory()
    # 创建账号B的微信对象
    wechat4 = wechat_factory_b.create_wechat()
    wechat5 = wechat_factory_b.create_wechat()
    # 使用账号B对象发送信息
    wechat4.send_message(content="heihei")
    wechat5.send_message(content="pupu")

执行结果

使用企业微信账号A推送信息:  haha
使用企业微信账号A推送信息:  hehe
使用企业微信账号A推送信息:  xixi
使用企业微信账号B推送信息:  heihei
使用企业微信账号B推送信息:  pupu

如果此时, 两个微信账号都不够用了, 需要增加第三个账号时, 所有的类都不需要修改, 只需创建新的类即可, 符合开放封闭原则

class AccountC(WeChat):

    def send_message(self, content):
        print("使用企业微信账号C推送信息: ", content)

    def send_image(self, imageid):
        print("使用企业微信账号C推送图片: ", imageid)
      
    
class AccountCFactory(WeChatFactory):

    def create_wechat(self):
        return AccountC()

原文地址

相关文章

  • Python语言实现工厂方法设计模式

    Python语言实现工厂方法设计模式 根据软件设计原则中开放封闭原则的指导思想, 一个类写好后,尽量不要修改里面的...

  • java(设计模式)

    前言 设计模式-1设计模式-2 5种创建型模式 工厂方法模式 要构建的对象,实现相同的接口 普通工厂方法。只有一个...

  • 十二、简单工厂模式

    简单工厂模式不属于23种GOF设计模式之一。它也称作静态工厂方法模式,是工厂方法模式的特殊实现。 1. 何为简单工...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 设计模式-工厂

    这里介绍一下设计模式中的简单工厂模式、工厂方法模式、抽象工厂模式在iOS中的实现。这三个设计模式是有演变关系的;在...

  • 设计模式-工厂模式-抽象工厂模式

    接着 设计模式-工厂模式-开发案列-工厂实现 继续剖析 1、抽象工厂角色划分? 特点->比工厂方法产品种类多 地图...

  • 工厂方法模式-披萨订购

    工厂方法模式介绍 工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现。工厂...

  • 常用设计模式的总结

    常用设计模式的总结一. 创建型模式Factory method 工厂方法作用实现Abstract factory ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

网友评论

      本文标题:Python语言实现工厂方法设计模式

      本文链接:https://www.haomeiwen.com/subject/hbhmaftx.html