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