zoukankan      html  css  js  c++  java
  • 关于抽象类和接口设计层面的问题,求答疑!

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

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

    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个函数都扔到接口去声明如何?

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

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

  • 相关阅读:
    gulp-rev + gulp-rev-collector解决前端缓存
    NSIS ERROR解决方法
    tortoiseGit教程(常用图文教程)
    Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.解决办法
    Windows之——pid为4的system进程占用80端口的解决办法
    小程序直播开发
    微信小程序直播接入指南
    解决网易云因版权无法生成外链歌单
    小程序之点击下载图片到本地
    PS 有哪些小技巧让你好用到哭?
  • 原文地址:https://www.cnblogs.com/hexie/p/4899412.html
Copyright © 2011-2022 走看看