Dubbo源码分析(6):Code2

背景

定义解码和编码方法。 Code2是Code的升级版本。

 

类图

问题

DubboCodec的父类已经实现了Code2接口并且DubboCodec没有实现Code2接口,为什么要implement Code2接口?

实验

场景:定义一个接口I,类A承继并实现接口方法,类B承继类A并实现自己的接口方法,类C承继类B并实现自己的接口方法,类D承继类C不实现接口方法。

 

环境

Oracle -JDK1.8.0_101

 

情况1:

类D实例化一个对象,调用接口方法。

情况1的结果

调用得是类C的接口方法

 

情况2

   类D承继接口I,并不实现接口方法,调用接口方法

情况2的结果

     调用得是类C的接口方法

 

结论:

如果低JDK版本(因为没有网线暂时不测试)与JDK1.8表现一致的话,DubboCodec实现Code2接口就是多些一举。

 

不知道为什么这么设计

1.

2

 protected Object decodeRequestData(Channel channel, ObjectInput in) throws IOException {
        return decodeRequestData(in);
}

3

 protected Object decodeRequestData(ObjectInput in) throws IOException {
        try {
            return in.readObject();
        } catch (ClassNotFoundException e) {
            throw new IOException(StringUtils.toString("Read object failed.", e));
        }
}

明明只要传一个参数非要传三个!为以后需求变动预留得吗?对这种做法非常不赞同。

 

posted @ 2017-02-17 14:45  文双萍  阅读(263)  评论(0编辑  收藏  举报