加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关键字interface

发布时间:2020-12-13 20:20:25 所属栏目:百科 来源:网络整理
导读:转自:http://www.javaeye.com/topic/7776 1、接口的定义是由谁来定义的,但是这样的思路其实存在以下几个问题: 1)按照先定义接口,在进行实现的思路,那么肯定是先有interface,才有class的,对吧。那么咱们讨论一个真实的系统时:这就必然导致一个至顶向

转自:http://www.javaeye.com/topic/7776

1、接口的定义是由谁来定义的,但是这样的思路其实存在以下几个问题:
1)按照先定义接口,在进行实现的思路,那么肯定是先有interface,才有class的,对吧。那么咱们讨论一个真实的系统时:这就必然导致一个至顶向下的开发过程,那么我就需要问你了,当你用这样一种思路进行开发时,对于一个Web项目,你是不是会先从jsp或者servlet写起呢?
2)还是按照先定义接口,再进行的实现的思路,那么一个class实现多个interface的情况如何才会出现呢?
3)当接口是我定义的,而实现是别人做的这样情况出现的时候,你的下面这句话就很难理解了“接口是你自己定义的。反映你自己的需求。什么叫没有完成? ”如果按照你的说法,那么需求怎么会变的呢?当需求变的时候,从哪里开始变起呢?

2、关于单元测试的问题,我始终认为单元测试并不能等于100%测试。假设A要B一起工作的,你通过单元测试,可以确定的,是A和B可以各自独立工作。那么我们应该通过什么方法,来确认A和B可以协同工作呢?

按照我的思路,假设A需要使用到B的功能,那么我会先测试B,在保证B通过了所有测试之后,我在测试A,假设出了问题,我就知道问题只会存在于A。就像一层一层打基础一样,当我的底层基础得到确认之后,我才能够再向上搭一层。

ajoo,你现在应该可以看出来了,我们俩的思路是相反的,一个是至顶向下,一个是至底向上。但是按照TDD这样的思路,我相信本质上他就是支持至底向上的。当然,TDD蕴含至底向上大家可以讨论一下,看看我是不是理解正确。

3、关于工作量的问题,我本来希望你通过代码来说明“什么情况下,才会出现,只需要改类,不需要改接口的情况呢?”

而你的回答甚是标准“again,接口IB围绕你的需求定义,并不依赖于B。抽象不依赖具体。B改了, 只要你的需求没改,接口就不用改。”

那还是我来举例子吧。

第一种,使用接口的情况

Java代码
  1. //接口
  2. publicinterfaceIA{
  3. publicvoiddoSomething();;
  4. }
  5. //实现
  6. publicclassAimplementationIA{
  7. publicvoiddoSomething();{
  8. System.out.println("doSomething");;
  9. }
  10. }
  11. //调用
  12. IAa=newA();;
  13. a.doSomething();;



第二种,不使用接口的情况

Java代码
  1. //直接实现
  2. publicclassA{
  3. publicvoiddoSomething();{
  4. System.out.println("doSomething");;
  5. }
  6. }
  7. //调用
  8. Aa=newA();;
  9. a.doSomething();;

无论以上的哪一种情况,只要doSomething这个函数的接受参数等等属性没有改变,那么接口和具体的对象都是不用改的。而如果doSomething的接收参数发生改变,第一种使用接口的例子,就需要改两个文件,而第二种则只需要改一个文件。当然,在调用者那里,都是需要改的。这就是工作量,ajoo说:“对你使用接口耦合的bonus啊。反正是免费的。”我可不认为是免费的,在需求尚未固化之前,我每次如果能少改一个文件,那也是很划算的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读