zoukankan      html  css  js  c++  java
  • 插拔式设计

    中间件配置

    实现功能的插拔式设计,参考django 中间件, 参考django restframework

    img

    # conf.settings.py
    """
    @author RansySun
    @create 2019-10-31-21:06
    """
    NOTIFY_LIST = [
        'notify.email.Email',
        # 'notify.msg.Msg',
        'notify.wechat.WeChat',
        'notify.qq.QQ',
    ]
    
    
    # notify 
    # __init__.py
    from conf import settings
    import importlib
    def send_all(content):
        for module_path in settings.NOTIFY_LIST:
            # module = 'notify.email' class_name='Email
            module, class_name = module_path.rsplit('.', maxsplit=1)
    
            # mod就是模块名
            mod = importlib.import_module(module)
    
            # 利用反射获取模块中的变量名, 获取类地址
            clas = getattr(mod, class_name)
            obj_class = clas()
    
            # 使用多态
            obj_class.send_msg(content)
            # print(clas)
    # email.py
    class Email(object):
        def __init__(self):
            # 发送邮件准备工作
            ...
    
        def send_msg(self, content):
            print(f'邮件通知:{content}')
            
    # Msg.py
    class Msg(object):
        def __init__(self):
            # 发送短信准备工作
            ...
    
        def send_msg(self, content):
            print(f'短信通知:{content}')
            
    # QQ.py        
    class QQ(object):
        def __init__(self):
            # 发送QQ准备工作
            ...
    
        def send_msg(self, content):
            print(f'QQ通知:{content}')
    # WeChat.py 
    class WeChat(object):
        def __init__(self):
            # 发送微信准备工作
            ...
    
        def send_msg(self, content):
            print(f'微信通知:{content}')
    
    import notify
    if __name__ == '__main__':
        notify.send_all('明天周五了')
    

    img

    进行统一发送消息,当不需要送则在settings中注释掉就可以,方便管理,既可以插也可以拔!

    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    Nginx 服务器安装及配置文件详解
    Linux 之 压缩解压缩
    RPM方式安装MySQL5.6
    Linux 之 搜索
    zabbix客户端安装
    JAVA输出指定目录下的子目录和子文件
    LoadRunner 11 安装破解
    SVN合并操作实践
    (转)SVN分支/合并原理及最佳实践
    MYSQL 免安装版(windows 7/64)
  • 原文地址:https://www.cnblogs.com/randysun/p/11774004.html
Copyright © 2011-2022 走看看