花公子丶 2015-09-13 14:37 采纳率: 50%
浏览 1809
已采纳

想请教下各位关于java接口设计的问题

我知道,java抽象类是一种“是什么”的关系,接口则是一种“有什么”的关系。那么在实际开发中,接口的设计过程是怎样的?我这里有三种想法,不知道是哪一种,或者都不是。
1、从上到下设计,我以map接口为例,就是架构师设计好map接口,然后再让程序员去实现HashTable,HashMap等类(ps:HashMap跟HashTable实现了map接口)。这里“从上”的意思就是先设计接口,“到下”就是再根据接口去实现类
2、跟1相反,是从下到上进行设计,就是先实现好类HashMap、HashTable等,再通过重构手段,不断提炼超类,直至最后成为接口
3、采用缺省适配器模式。就是写完HashMap之后,将其方法提炼为接口map1。之后再要实现HashTable等类的时候,抽取HashMap与HashTable的共同部分为接口map2,让这两个类都实现map2,再去掉原先的map1
不知道在实际开发中用的是哪一种方式?如果我说的三种都是错的 ,恳请您跟我说说对的是什么样子的,感谢。

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-09-13 15:30
    关注

    接口在Java中本身有不同的用法:
    (1)对组件解耦,比如说类似代码分层之类的。这种情况就适合根据业务提炼接口
    (2)封装代码,比如你说的设计数据结构、之类的,那么就是先设计接口,再设计对应的类
    (3)在Java 8以前,Java没有事件、回调函数、Lambda函数之类的概念,因此注入代码也通过接口实现。这种情况,其实接口只是扮演一个函数的容器而已,不需要什么特别的设计。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含