使用反射及依赖注入实现灵活的插件模式
来源:互联网 发布:js跨域cookie 编辑:程序博客网 时间:2024/04/30 11:14
1.问题情境
在做BPM(业务流程处理)的过程中,我们通常要根据不同的处理流程选择相应的处理方法。这些处理流程的配置信息在数据库中,但是具体的相应的处理方法在代码中,如何能够根据数据库中的配置灵活加载相应的处理模块呢?
2.解决思路
首先,设计一个接口,包含业务处理流程的一些方法,比如发起请求,审核请求,结束流程。然后使用不同的处理方法类去实现这个接口。
然后,在数据库中配置每个流程相应的处理方法的实现类类名,根据配置信息采用反射的方式动态创建处理方法实现类的实例。
最后,设计一个适配器类(Adapter),设计一个构造函数,采用依赖注入的方式,注入一个抽象(接口)类型的引用。在实际调用的时候将反射得到的实例传进去就可以了,适配器(adapter)内部知道如何调用相应的方法进行处理。
3.具体实现
从代码层次来说,我们的调用关系如下:
4.效果
配置信息如下:
<appSettings> <add key="ProcessName" value="ProcessC"/> </appSettings>效果如下:
如果我们改变配置
<appSettings> <add key="ProcessName" value="ProcessA"/> </appSettings>效果如下:
5.总结:
这种方式能够方便地切换不同的处理方式,使用IOC及反射实现更加灵活的处理架构,提高系统的健壮性。
源代码下载:
http://download.csdn.net/detail/afandaafandaafanda/8535249
0 0
- 使用反射及依赖注入实现灵活的插件模式
- 反射实现加依赖注入
- PHP反射机制实现自动依赖注入
- 使用Unity 实现依赖注入
- 使用Unity 实现依赖注入
- 使用Unity 实现依赖注入
- Spring的反射机制和依赖注入
- Spring的反射机制和依赖注入
- Spring的反射机制和依赖注入
- PHP实现依赖注入-使用反射机制和动态代理技术 - 简单思想(咋个办呢 zgbn)
- 工厂模式、控制反转及依赖注入
- 工厂模式、控制反转及依赖注入
- 工厂模式、控制反转及依赖注入
- php 反射 依赖注入
- 模拟实现Struts拦截器-蕴含着代理模式,AOP,工厂模式,依赖注入,Java 反射,动态构造等机制
- 依赖注入的实现原理
- FLEX4 依赖注入的实现
- Android依赖注入的实现
- tomcat7配置用户
- 下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换
- 【编程笔记】2012 - 2016年
- Compare Version Numbers
- 第四周项目一:三角形类的构造函数(2):默认构造函数
- 使用反射及依赖注入实现灵活的插件模式
- 数组作数据成员(1)
- (7.1.2)数据库原理之关系规范化
- java.io.FileNotFoundException: /mnt/sdcard/xxxx.mp3
- 原型污染和猴子补丁 Prototype Pollution and Monkey-Patching
- java 对称加密——密钥与加密后的数据存盘方式
- Macbook Vim高亮
- boundingRectWithSize 的使用, 计算UILable高度, 包含Emoji及多属性string
- java快速排序