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

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

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

  • 相关阅读:
    web项目获取spring的applicationContext方式一
    idea关于tomcat中文乱码问题
    java面试题02
    JDBC连接步骤(三)
    JDBCAPI简介(二)
    JDBC简介(一)
    Maven(三)archetype
    如何javaSwing关闭子窗口不关闭父窗口
    Java中Object转化为int类型
    java double转int
  • 原文地址:https://www.cnblogs.com/hexie/p/4899412.html
Copyright © 2011-2022 走看看