第三方组件的中间层
1. 背景
最近在写一个rpc的中间层,目前主要为了屏蔽jsf两个版本的差异,并为以后兼容dubbo提供基础。
2. 早期尝试
最早实现的方式是,依照Jsf当前的类抽象出对应的通用类,实现一套自定义的接口,异常及工厂类。
由此遇到的问题是:
- POJO转换比较繁琐;
- 工厂类的逻辑实现繁琐;
- 与具体实现耦合太高;
3. 最后方案
我把demo给阳哥review后,阳哥说这样耦合太重。整改如下:
- 改为简单的抽象接口,提高灵活度;
- 通过map传递参数;
- 把装配的逻辑放在底层实现;
- 把中间层做薄
接口定义如下:
1 | public interface IRpcService { |
4. 反思
针对第三方的组件做中间层,如果直接以代理的方式来实现会耦合太高,反之抽象出简单的接口,把中间层做薄,会更加的灵活