zoukankan      html  css  js  c++  java
  • 由django中间件引发的编程思想

    由django中间件引发的编程思想

    创建一个文件夹,把一个个功能写成一个个py文件,假如我们写一个消息通知,让qq, 微信,邮箱都能接收到,qq, 微信,邮箱就是一个个功能

    aapp02文件夹下的qq.py

    class Qq(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'QQ通知:{content}')
    
    

    aapp02文件夹下的wechat.py

    class Wechat(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'微信通知:{content}')
    
    

    aapp02文件夹下的email.py

    class Email(object):
        def __init__(self):
            pass
        def send(self,content):
            print(f'邮件通知:{content}')
    
    

    aapp02文件夹下的__init__.py

    import  settings
    import importlib
    
    def send_all(content):
        for path_str in settings.APP02_LIST:
            module_path ,class_name = path_str.rsplit('.',maxsplit=1) 
            module = importlib.import_module((module_path)) #1 利用字符串导入模块
            cls = getattr(module,class_name) # 2 利用反射获取类名
            obj =cls() # 3 生成类的对象
            obj.send(content)  # 4 利用鸭子类型直接调用send方法
    

    settings.py:

    APP02_LIST = [
        'aapp02.email.Email',
        'aapp02.qq.Qq',
        'aapp02.wechat.Wechat',
    
    ]
    

    start.py

    import aapp02
    aapp02.send_all('下课了')
    

    当我们添加或者删除一个功能的时候,只需要在seetings里面添加或注释掉就可以了.

  • 相关阅读:
    C#中将全部代码一次性折叠
    C#中图片单击旋转事件
    块参照重命名
    补强圈设计
    c# winform 按名称取得控件
    获得某控件的父控件(容器)中的所有控件
    回车键当Tab键使用
    替换CAD中原有命令为开发人员自己开发的命令的方法
    窗体设置
    判断控件的tag是否为空的方法
  • 原文地址:https://www.cnblogs.com/zc110/p/13067266.html
Copyright © 2011-2022 走看看