锁定老帖子 主题:对于接口越来越迷茫
精华帖 (0) :: 良好帖 (6) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-13
其实接口是抽象出来的,不是有个什么Service类就必须搞个IService和ServiceImpl出来。在你重构代码的时候或者需求有变化的时候,才使用的。我的看法是该用的时候用,不该用的时候不用,只要这个需求稳定,有几个耦合度高点也无所谓。
|
|
返回顶楼 | |
发表时间:2012-04-13
接口定义的是规范,注意的是输入、输出。
系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。 接口实际上是定义了标准,隐蔽自身的实现细节。 |
|
返回顶楼 | |
发表时间:2012-04-13
ericchi 写道 接口定义的是规范,注意的是输入、输出。
系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。 接口实际上是定义了标准,隐蔽自身的实现细节。 我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈 |
|
返回顶楼 | |
发表时间:2012-04-13
jinnianshilongnian 写道 ericchi 写道 接口定义的是规范,注意的是输入、输出。
系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。 接口实际上是定义了标准,隐蔽自身的实现细节。 我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈 ,昨天有人群里问我,和兄弟同解 |
|
返回顶楼 | |
发表时间:2012-04-13
要很好的回答这个问题,确实要高人。
|
|
返回顶楼 | |
发表时间:2012-04-13
jinnianshilongnian 写道 ericchi 写道 接口定义的是规范,注意的是输入、输出。
系统与系统间的接口、模块与模块间的接口、类与类之间的接口都是如此。 接口实际上是定义了标准,隐蔽自身的实现细节。 我把接口理解为契约,就是规范,你不遵守就会吃亏 哈哈 哈哈,用契约来描述更准确! |
|
返回顶楼 | |
发表时间:2012-04-21
一般写框架什么的才要接口,一般项目应该不太需要吧。
|
|
返回顶楼 | |
发表时间:2012-04-22
myten 写道 楼主,我这么跟你说,好的架构体现在接口和切面上。切面暂且不谈。
先说接口,假如有一个系统,方方面面的功能都抽成了接口。这些接口就是整个系统的骨架。 每个接口中定义的函数以及函数的返回值类型等等。 现在系统开发完毕,并且完全遵照这些个接口来实现。 OK,有一个模块需要扩展一些,比如在原来的查询结果上进行一些筛选和过滤。 A接口有AImpl实现,其函数Girl getGirl()要过滤掉非洲和泰国的妹子。这时候怎么办呢? 一种办法是去看原来的源码,在里面改一下。这时候第二个人就需要改第一个人遗留的代码。 (这里不说利用接口实现动态代理完成事务控制等等) 可是,第三个人再来改呢?最后这些代码被改的谁也看不懂了。 另外一种办法是重新写个A接口的实现AImpl2,并且该实现类持有AImpl类。这样AImpl2的Girl getGirl()函数内部 调用AImpl的getGirl(),将其结果进行删选就足以。丝毫不必关心AImpl的代码。 接口可以让我们只关心传入参数和返回结果。 只有控制整个项目脉络的人才懂得接口的重要性。上面的第二种情况如果持续递增,会累积出来哪个模块需要该重新写个实现了。 假设A接口的实现因为需求改变而一直衍生和传递调用,必定有损性能。 这个时候一看A接口的实现类有好多,很清晰的知道这个模块需要重写了。而新人接手时,只需要根据需求完成接口里定义好的函数就可以了。 其它的代码调用仍旧是用A接口类型接收,而不必去改动其他依赖代码。 接口的意义只有那些去定义接口的人才明白,而不是为了定义接口而写接口。 废这么多话,不知道楼主能看懂么。 学习了 |
|
返回顶楼 | |
发表时间:2012-04-22
ffychina 写道 sodart 写道 天朝的国情用接口就是个错误,做项目是给客户做的,不是给自己做的,在需求频繁变化的前提下使用接口就是给自己找麻烦。。。
完全同意!我基本不做业务级的接口,只做系统级的接口。只用struts2,spring不用,hibernate更不用,这样写系统更高效,更灵活,维护更方面,上手更容易,系统启动速度更快。我认为Spring,Hibernate,JBPM甚至Hadhoop都把问题复杂化了,因为这些框架做得太通用了,而且更多的是考虑到国外较为成熟的IT环境,结果对我们java程序员来说就是把问题复杂化了。其实看一下别的语言,哪个像j2ee这么多框架的,像spring这样用xml去配置类关系的?像hibernate这样为写一个sql搞得这么麻烦的?我更推荐轻使用量级的东西,因为业务层面最关心的只有四点:质量,功能,性能,成本。 同意你的看法。我的做法跟你一样。 在一般的项目里业务部分,真有必要用spring么?spring,hibernate 越做越复杂,看到就头痛。 一堆配置文件,各种接口,搞得复杂的很,有几个项目需要不同的业务实现,需要不同的数据接口需要你来依赖注入? |
|
返回顶楼 | |
发表时间:2012-05-08
很多说接口只有等到需要的时候再重构抽象!我很像知道,你们的项目有多少次重构,你们的测试代码覆盖到了多少范围。经历过几个公司,在单元测试上面都做的不好,没有好的测试为基础,你扯重构,扯设计是从重构中得到的,扯不要过度设计,不觉得心里很虚么!
接口可以隐藏内部实现,可以很好的公布提供了多少个功能。可以让层于层更加清晰。给你看一个类,和给你看一个接口以让你了解提供的功能,你觉得哪个好! 我依旧坚定的认为service 和 serviceImpl dao 等都是必要的! 有些个编译架构从代码减少程度来看,确实方便了,也以为通过抽象类来达到接口的可替换实现的功能! 只是,接口作为一种契约,期说明的简洁性,隐藏内部实现的功能被减少创建几个类来代替,呜呼哀哉! |
|
返回顶楼 | |