关于抽象类和接口设计层面的问题,求答疑!

这个问题的背景是这样的:

我在代码中需要定义一个消息处理类,消息处理类有如下功能:

getContent();   //得到消息内容

getSender();    //得到发送人

getType();  //得到消息类型

send();    //执行发送

check();    //验证消息的合法性

我最后反复修改,设计后的结果如下:(之后贴代码)

IMessageHandler:

{

  getContent();

  getSender();

  getType();

}

AbstractMessageHandler implenments IMessageHandler:

{

  abstract send();

  abstract check();  

  getContent(){};

  getSender(){};

  getType(){};

}

问题是:这样分配方法的声明恰当嘛?把三个getXXX放在接口中声明,然后再抽象类中在实现getXXX同时也声明另外两个抽象函数。

假如我认为这样设计是正确的,这样写带来的便捷有哪些,体现了什么编程思想?

可以先考虑下面极端的情况:

我之后做过这样的处理,得!我不要接口了,反正在抽象类中还要实现一次,我五个都在抽象类中声明,只是getXXX我直接写成一个

共有的函数。

之后问题来了,我代码中有如下需求。

<T extends AbstractMessageHandler>

有一个泛型类需要去extends ,但是泛型一般继承的都是接口(看baidu内部代码的出来的结论),那我这个没接口怎么办?

问题:为啥泛型要去extends 接口?就不能extends 抽象类嘛?难道要特意建一个接口去满足业内这种写法?

之后我有把接口加上去了,就放了刚刚的三个getXXX,然后我代码能跑通了,我又很极端的思考,我把5个函数都扔到接口去声明如何?

问题:所有方法都在接口里面声明,会怎么样?这样写为什么不恰当?

最本质的问题?什么是接口?什么是抽象类?两者的区别在何处?

原文地址:https://www.cnblogs.com/hexie/p/4899412.html