论坛首页 Java企业应用论坛

接口存在的意义只在于接口依赖注入

浏览 27254 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-04-09  
关于接口存在的意义,之前有一篇帖子讨论过(http://www.iteye.com/post/957921?page=1),并且跟帖无数,我也看过,这里发表一点自己的看法。抛砖引玉。
我的立场是站在spring的依赖注入的角度上来思考这个问题的。个人认为,接口存在的意义只在于接口依赖注入的时候得到淋漓尽致的体现。至于其他时候,作用则并不是那么大了。其理由如下:
1. 在非接口注入的情况下,接口的定义,某种程度上可以理解为对类的一个总的设计,因为其方法并不需要实现,所以可以更多的去思考业务上的逻辑问题,一方面更多心思的去想如何把功能点设计的更加全面,另一方面当我们在实现这个接口的时候,就会受到这个接口的方法定义的约束,这个时候尽可能多的就是考虑如何实现具体的业务的问题,而不用去考虑业务的设计的是否周全的问题。
2. 我的第二点略带否定第一点的意味。如果说只是起一个总领的作用的话,相信当初在设计这个类的时候的UML图里面就已经写的很详细了。即使我不需要这一个接口,我根据我设计完备的UML图,我一样的可以在写类的方法的时候只关注我的类的方法的实现,而不用去考虑类的方法设计是否完备。
3. 在spring的接口注入的时候,这个时候方才体现了接口的优势。我们只调用接口,接口的具体实现可以有一个,也可以有N个,但是具体调用哪一个实现,我们可以动态的根据配置文件,在具体运行的时候再来决定。这就相当于用调用接口,把更多的灵活性留给了以后的开发和维护,以及功能模块的添加。
更多的暂时还没有去想,比较仓促就先写到这里。我先抛出观点。欢迎拍砖。
   发表时间:2009-04-09   最后修改:2009-04-09
由于设计失败我看见过的N多项目dao是以页面逻辑分块开发的.....正常的DAO与页面逻辑关系非常的小.
我想说的只有这句话.
0 请登录后投票
   发表时间:2009-04-09  
java的世界其实很大的,并不是只有SSH.....
0 请登录后投票
   发表时间:2009-04-09  
抛出异常的爱 写道
由于设计失败我看见过的N多项目dao是以页面逻辑分块开发的.....正常的DAO与页面逻辑关系非常的小.
我想说的只有这句话.

不可否认   被你说中了   我们的项目 目前的dao是和页面逻辑有很大的关联,及相似程度,但是 总的来说 页面和dao的关系,不是1:1的关系  而是N:N的关系
1 请登录后投票
   发表时间:2009-04-09  
guooscar 写道
java的世界其实很大的,并不是只有SSH.....

对   是很大的  但是我们目前不是SSH  中间不是struts 整个是.NET上的spring.net+NHibernate
0 请登录后投票
   发表时间:2009-04-09  
october731 写道
guooscar 写道
java的世界其实很大的,并不是只有SSH.....

对   是很大的  但是我们目前不是SSH  中间不是struts 整个是.NET上的spring.net+NHibernate

是我穿越了……还是你穿越了……
0 请登录后投票
   发表时间:2009-04-09  
akiraray 写道
october731 写道
guooscar 写道
java的世界其实很大的,并不是只有SSH.....

对   是很大的  但是我们目前不是SSH  中间不是struts 整个是.NET上的spring.net+NHibernate

是我穿越了……还是你穿越了……


JAVA只是一种语言  SSH只是一种框架  只是WEB的应用比较多而已   WEB不是JAVA的全部  那么用JAVA开发的MQ  NIO  数据库整合   这些底层的东西又是什么呢???
0 请登录后投票
   发表时间:2009-04-09  
和spring有啥关系,随便举个例子,你所在的系统是一个总公司集中项目,某个功能中你将要面对分公司以及不同业务线两个纬度叠加造成的业务差异,UML中定义的东西不是接口的话你咋玩?
0 请登录后投票
   发表时间:2009-04-10  
dada 写道
和spring有啥关系,随便举个例子,你所在的系统是一个总公司集中项目,某个功能中你将要面对分公司以及不同业务线两个纬度叠加造成的业务差异,UML中定义的东西不是接口的话你咋玩?

但是至少这种方式  接口的定义是在UML当中 而不是在具体的程序设计里面   专门一个包或一个类库来装接口
1 请登录后投票
   发表时间:2009-04-10  
akiraray 写道
october731 写道
guooscar 写道
java的世界其实很大的,并不是只有SSH.....

对   是很大的  但是我们目前不是SSH  中间不是struts 整个是.NET上的spring.net+NHibernate

是我穿越了……还是你穿越了……

what does it mrean??
0 请登录后投票
论坛首页 Java企业应用版

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