模块化编程思想

django 中间件 设计思想

通过修改配置文件来添加修改功能,以flask为例,假如要实现两种消息发送方式,email和msg

先放文件目录

message里面的每一个py文件都对应一种消息发送方式,在__init__中 写一个通用的send方式,通过读取setting里面列表,循环导入message文件夹的每一个类,然后执行类的send方法,都继承base类是为了限制必须实现send方法

email.py

from .base import Base

class Email(Base):
    def __init__(self):
        self.name = 'email'

    def send(self):
        print('email_send')

msg.py

class Msg():
    def __init__(self):
        self.name = 'message'

    def send(self):
        print('msg_send')

base.py

class Base():
    def send(self):#必须 实现send方法
        raise NotImplementedError

__init__.py

import setting
import importlib


def send_message():
    for path in setting.MESSAGE:
        m, c = path.rsplit('.', maxsplit=1)#模块,类 分割出来
        md = importlib.import_module(m) #导入模块
        obj = getattr(md, c)() #通过反射得到函数并实例化 反射就是通过字符串来执行函数
        obj.send()


app.py

import flask
from util.message import send_message  #只需要导入__init__中的send函数
import util.message.email


app = flask.Flask(__name__)

@app.route("/index")
def index():
    send_message()#实现了  高内聚  低耦合, 通过读取配置文件来增加功能,增加功能时更改配置文件,再写一个类实现send方法即可
    return "index"

app.run()

setting.py

MESSAGE = [
    "util.message.email.Email",
    "util.message.msg.Msg"
]

 如果想要加入wechat方式,只需要在setting.py中加入一个str,然后在message中添加一个类实现send方法

不用更改业务逻辑代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值