十三、扩展点的设计
2020-03-21 本文已影响0人
此间有道
一、什么是扩展点
- 本质是面向接口编程;
- 扩展点是一类在系统开发时预留的特殊接口,系统在运行时会动态寻找,装载和执行这类接口的实现。以此来实现对指定功能的扩展,且不需要对已有系统做任何修改。
- 只要符合扩展点的契约,任何人在任何时间都可以去扩展特定功能,而不必关心程序的主体逻辑。
- 如果不使用扩展点,增加功能势必会修改程序的主体。
- 系统开发时,提炼出扩展点,也是系统中各个功能模块抽象度较高的一种表现;
二、扩展点的优点
- 符合开闭原则
- 框架的Core是稳定的,扩展已有的功能更简单,只需要两步:
1)开发新扩展功能;
2)加入运行时依赖; - Core中可以独立完整运行,并可以限定扩展的范围,且也很容易控制扩展对Core功能造成影响。
三、如何设计扩展点
- 首先要明白要扩展什么?
- 抽象出要扩展的接口
- 写出扩展加载逻辑等Core逻辑,这个最小的内核,可以独立运行。
常见的扩展点的加载逻辑有:
1)Java JDK SPI;
2)Spring SPI;
3)eclipse 扩展点;
四、EDI中的扩展点
- Flow的结点支持扩展;
- 日志框架支持扩展;
- RPC框架支持扩展;
- DT支持的协议是扩展的,目前支持X12,Edifact;
- DT的功能结点也是扩展的;