花公子丶 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 请问各位,如何在Jetson nano主控板的Ubuntu系统中安装PyQt5
  • ¥15 MAC安装佳能LBP2900驱动的网盘提取码
  • ¥400 微信停车小程序谁懂的来
  • ¥15 ATAC测序到底用什么peak文件做Diffbind差异分析
  • ¥15 安装ubantu过程中第一个vfat 文件挂载失败
  • ¥20 GZ::CTF如何兼容一些靶机?
  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥150 求 《小魔指》街机游戏机整合模拟软件