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里面添加或注释掉就可以了.

  • 相关阅读:
    Git 最全命令使用
    git 配置(实用)
    用Redis进行实时数据排名
    最长上升子序列
    KMP算法
    计算星期几【基姆拉尔森公式】
    集合划分(贝尔数)
    合数分解(质因数分解)
    乘法逆元
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/zc110/p/13067266.html
Copyright © 2011-2022 走看看