八、第三方组件的中间层

1. 背景

最近在写一个rpc的中间层,目前主要为了屏蔽jsf两个版本的差异,并为以后兼容dubbo提供基础。

2. 早期尝试

最早实现的方式是,依照Jsf当前的类抽象出对应的通用类,实现一套自定义的接口,异常及工厂类。
由此遇到的问题是:

  1. POJO转换比较繁琐;
  2. 工厂类的逻辑实现繁琐;
  3. 与具体实现耦合太高;

3. 最后方案

我把demo给阳哥review后,阳哥说这样耦合太重。整改如下:

  1. 改为简单的抽象接口,提高灵活度;
  2. 通过map传递参数;
  3. 把装配的逻辑放在底层实现;
  4. 把中间层做薄

接口定义如下:

public interface IRpcService {
    <T> T createConsumer(Class<T> clazz, Map options);

    <T> IProviderConfig<T> createProvider(Class<T> clazz, Map options);
}

4. 反思

针对第三方的组件做中间层,如果直接以代理的方式来实现会耦合太高,反之抽象出简单的接口,把中间层做薄,会更加的灵活

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。