java模块可插拔_实现可插拔(一种思想)

更新时间:2023-07-25 16:04:16 阅读: 评论:0

java模块可插拔_实现可插拔(⼀种思想)根据django中间件配置,创建⾃⼰项⽬的中间件,实现功能的可插拔式设计
参考 django 中间件
参考 django restframework
创建中间件的思想
开始的⽐较low的版本
# @Author :SkyOcean
# @File :notify.py
def nd_msg(content):
print('短息通知%s' % content)
def nd_emil(content):
print('邮箱通知%s' % content)目的地英语
def nd_wechat(content):
print('微信通知%s'% content)
分手的文章
# @Author :SkyOcean
# @File :run.py
ify import *
def run(content):
nd_msg(content)
nd_emil(content)
nd_wechat(content)
run('今天放假')
模拟中间件
创建⼀个notify⽂件夹
⽂件夹内容
# @Author :SkyOcean
# @File :msg.py
class Email(object):
def __init__(lf):
pass#前提准备,⼀些密钥,⼀些配置
def nd(lf, content):
print('邮件通知%s' % content)
# @Author :SkyOcean
# @File :msg.py
class Msg(object):
def __init__(lf):
pass#前期准备,连接接⼝,配置密钥,api,参数等
抹杀def nd(lf,content):
外语教育网print('短信通知%s'%content)
# @Author :SkyOcean
# @File :msg.py
class WeChat(object):
def __init__(lf):
pass#前提zui'bei
def nd(lf, content):
collegesprint('微信通知%s' % content)
# @Author :SkyOcean
# @File :__init__.py
import ttings
dance怎么读spencer tunickimport importlib
def nd_all(content):
for module_path in ttings.NOTIFY_LIST:
module, class_name = module_path.rsplit('.',maxsplit=1)
# module = 'ail' class_name = 'Email'
mod = importlib.import_module(module) # mod就是模块名
# from notify import email
cls = getattr(mod,class_name) # 利⽤反射 获取到模块中类的变量名obj = cls()
obj.nd(content)
外⾯写好配置⽂件
# @Author :SkyOcean
# @File :ttings.py
NOTIFY_LIST=[
'ail.Email',
describe是什么意思'notify.msg.Msg',bright star
'notify.wechat.WeChat',
]
运⾏⽂件
# @Author :SkyOcean
# @File :run.py
import notify
notify.nd_all('今天很开森')
补充importlib模块
可以将字符串进⾏拆分
import importlib
mod = importlib.import_module('ail' )
这个时候就是将ail 拆分成 from notify import email mod这个时候就等于email
possiblely
它可以点email内部的所有⽅法
⼀般的使⽤
cls=attr(mod,'Email')
从mod模块内部获取Email类
这个时候cls就是Eail类
然后可以初始化
obj=cls()获取对象
⽤对象点取类中的⽅法等。

本文发布于:2023-07-25 16:04:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/188435.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:通知   中间件   模块   插拔   获取
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图