论坛首页 Java企业应用论坛

对于接口越来越迷茫

浏览 33430 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-13  
其实接口是抽象出来的,不是有个什么Service类就必须搞个IService和ServiceImpl出来。在你重构代码的时候或者需求有变化的时候,才使用的。我的看法是该用的时候用,不该用的时候不用,只要这个需求稳定,有几个耦合度高点也无所谓。
0 请登录后投票
   发表时间:2012-04-13  
接口定义的是规范,注意的是输入、输出。

系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。

接口实际上是定义了标准,隐蔽自身的实现细节。
0 请登录后投票
   发表时间:2012-04-13  
ericchi 写道
接口定义的是规范,注意的是输入、输出。

系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。

接口实际上是定义了标准,隐蔽自身的实现细节。


我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈
0 请登录后投票
   发表时间:2012-04-13  
jinnianshilongnian 写道
ericchi 写道
接口定义的是规范,注意的是输入、输出。

系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。

接口实际上是定义了标准,隐蔽自身的实现细节。


我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈

,昨天有人群里问我,和兄弟同解
0 请登录后投票
   发表时间:2012-04-13  
要很好的回答这个问题,确实要高人。
0 请登录后投票
   发表时间:2012-04-13  
jinnianshilongnian 写道
ericchi 写道
接口定义的是规范,注意的是输入、输出。

系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。

接口实际上是定义了标准,隐蔽自身的实现细节。


我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈



哈哈,用契约来描述更准确!
0 请登录后投票
   发表时间:2012-04-21  
一般写框架什么的才要接口,一般项目应该不太需要吧。
0 请登录后投票
   发表时间:2012-04-22  
myten 写道
楼主,我这么跟你说,好的架构体现在接口和切面上。切面暂且不谈。
先说接口,假如有一个系统,方方面面的功能都抽成了接口。这些接口就是整个系统的骨架。
每个接口中定义的函数以及函数的返回值类型等等。
现在系统开发完毕,并且完全遵照这些个接口来实现。
OK,有一个模块需要扩展一些,比如在原来的查询结果上进行一些筛选和过滤。
A接口有AImpl实现,其函数Girl getGirl()要过滤掉非洲和泰国的妹子。这时候怎么办呢?
一种办法是去看原来的源码,在里面改一下。这时候第二个人就需要改第一个人遗留的代码。
(这里不说利用接口实现动态代理完成事务控制等等)
可是,第三个人再来改呢?最后这些代码被改的谁也看不懂了。
另外一种办法是重新写个A接口的实现AImpl2,并且该实现类持有AImpl类。这样AImpl2的Girl getGirl()函数内部
调用AImpl的getGirl(),将其结果进行删选就足以。丝毫不必关心AImpl的代码。

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

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

废这么多话,不知道楼主能看懂么。



学习了
0 请登录后投票
   发表时间:2012-04-22  
ffychina 写道
sodart 写道
天朝的国情用接口就是个错误,做项目是给客户做的,不是给自己做的,在需求频繁变化的前提下使用接口就是给自己找麻烦。。。

完全同意!我基本不做业务级的接口,只做系统级的接口。只用struts2,spring不用,hibernate更不用,这样写系统更高效,更灵活,维护更方面,上手更容易,系统启动速度更快。我认为Spring,Hibernate,JBPM甚至Hadhoop都把问题复杂化了,因为这些框架做得太通用了,而且更多的是考虑到国外较为成熟的IT环境,结果对我们java程序员来说就是把问题复杂化了。其实看一下别的语言,哪个像j2ee这么多框架的,像spring这样用xml去配置类关系的?像hibernate这样为写一个sql搞得这么麻烦的?我更推荐轻使用量级的东西,因为业务层面最关心的只有四点:质量,功能,性能,成本。


同意你的看法。我的做法跟你一样。
在一般的项目里业务部分,真有必要用spring么?spring,hibernate 越做越复杂,看到就头痛。
一堆配置文件,各种接口,搞得复杂的很,有几个项目需要不同的业务实现,需要不同的数据接口需要你来依赖注入?


0 请登录后投票
   发表时间:2012-05-08  
很多说接口只有等到需要的时候再重构抽象!我很像知道,你们的项目有多少次重构,你们的测试代码覆盖到了多少范围。经历过几个公司,在单元测试上面都做的不好,没有好的测试为基础,你扯重构,扯设计是从重构中得到的,扯不要过度设计,不觉得心里很虚么!

接口可以隐藏内部实现,可以很好的公布提供了多少个功能。可以让层于层更加清晰。给你看一个类,和给你看一个接口以让你了解提供的功能,你觉得哪个好!

我依旧坚定的认为service 和 serviceImpl dao 等都是必要的!

有些个编译架构从代码减少程度来看,确实方便了,也以为通过抽象类来达到接口的可替换实现的功能!

只是,接口作为一种契约,期说明的简洁性,隐藏内部实现的功能被减少创建几个类来代替,呜呼哀哉!

0 请登录后投票
论坛首页 Java企业应用版

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