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));
        }
}

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

原文地址:https://www.cnblogs.com/wspgbw/p/6409815.html