论坛首页 Java企业应用论坛

对于接口越来越迷茫

浏览 33579 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-22  
新项目要采用S2SH,结合上次的经验,我感觉不出接口给我带来多大的好处

摘一段:

对于接口的作用,在一些小的项目上,很难看出其发挥的优势。这就使一些经常的做小项目的开发人员,做时间久了就感觉不到它有什么好的,有时候写起来还麻烦,干脆不用了。其实,在一些大项目上,接口的作用是发挥地相当的明显的。

比如:如果你开发业务逻辑代码,当你好不容易的实现了它全部的功能,突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改,如果代码关联性强的话,会有很多人都要改动代码,这样一来二去,程序会变得相当的不稳定,而且可能还会出现更多的新Bug,所有人都可能会陷入混乱。
但如果使用接口的话,在你使用它之前,就要想好它要实现的全部功能(接口实际上就是将功能的封装)。确定下这个接口后,如果用户需求变了,你只要重新写它的实现类,而其它人只会调用你的接口,他不管你是怎么实现的,它只需要接口提供的功能。这样,很可能只需要把你的代码修改就可以了,其他人什么都不用做。
同时:这样做的话,使得开发人员能够分工明确,只要确定下来接口了,就可以同时进行开发,提高开发效率。
另外,使用接口还有使用方便,可读性强,结构清晰等优点。


要说项目小也不算小,除了最后的同时我真的没觉得有什么好处,有时候说需求改变只改实现就可以,但是如果没有接口也可以直接改里面的代码来实现,只要调用方法不变即可。

还请高人能用简易的例子说说实际中接口的好处
拜谢
   发表时间:2012-02-22  
任意一个能被外部使用的方法都可以说是接口
0 请登录后投票
   发表时间:2012-02-22  
接口简单的来说就是一种抽象,就是说接口用来明确你做什么,而实现是负责明确怎么做的,其实接口有什么用,你看看很多框架的应用就可以知道了呀,比如,hibernate中有一些接口可以自己写一些实现,比如主键生成策略,或者说使用约定大于配置的时候,你约定的规则是什么呢?也许每个人都有自己的习惯,或者说每个公司都有自己的规范,这种东西就很适合做成接口,简单来说,会出现接口的地方一般就是一件事情可能有多种实现的可能,或者有一些不确定的因素.
0 请登录后投票
   发表时间:2012-02-23  
当你不得不用接口的时候才会真正了解接口的用途,如果可以不用并且在预期之内也不会造成问题,那就不用呗。
0 请登录后投票
   发表时间:2012-02-23  
不明白一点。既然你的接口能够确定未来的调用的规范,你的方法却不行么。为什么会“突然用户需求要改,你在修改你代码的同时,调用你代码的其它人也会改”。如果真的需要修改方法参数签名,难道你的接口又可以不改?
0 请登录后投票
   发表时间:2012-02-23  
楼主,我这么跟你说,好的架构体现在接口和切面上。切面暂且不谈。
先说接口,假如有一个系统,方方面面的功能都抽成了接口。这些接口就是整个系统的骨架。
每个接口中定义的函数以及函数的返回值类型等等。
现在系统开发完毕,并且完全遵照这些个接口来实现。
OK,有一个模块需要扩展一些,比如在原来的查询结果上进行一些筛选和过滤。
A接口有AImpl实现,其函数Girl getGirl()要过滤掉非洲和泰国的妹子。这时候怎么办呢?
一种办法是去看原来的源码,在里面改一下。这时候第二个人就需要改第一个人遗留的代码。
(这里不说利用接口实现动态代理完成事务控制等等)
可是,第三个人再来改呢?最后这些代码被改的谁也看不懂了。
另外一种办法是重新写个A接口的实现AImpl2,并且该实现类持有AImpl类。这样AImpl2的Girl getGirl()函数内部
调用AImpl的getGirl(),将其结果进行删选就足以。丝毫不必关心AImpl的代码。

接口可以让我们只关心传入参数和返回结果。
只有控制整个项目脉络的人才懂得接口的重要性。上面的第二种情况如果持续递增,会累积出来哪个模块需要该重新写个实现了。
假设A接口的实现因为需求改变而一直衍生和传递调用,必定有损性能。
这个时候一看A接口的实现类有好多,很清晰的知道这个模块需要重写了。而新人接手时,只需要根据需求完成接口里定义好的函数就可以了。
其它的代码调用仍旧是用A接口类型接收,而不必去改动其他依赖代码。

接口的意义只有那些去定义接口的人才明白,而不是为了定义接口而写接口。

废这么多话,不知道楼主能看懂么。
1 请登录后投票
   发表时间:2012-02-23  
只能意会不可言传,呵呵。
0 请登录后投票
   发表时间:2012-02-23  
oo设计大师才能完美回答这个问题
0 请登录后投票
   发表时间:2012-02-23  
没有接口说明没有设计
0 请登录后投票
   发表时间:2012-02-23  
有些事情就像看A,看的人很爽、做的人却未必。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics