关于SSH框架中的接口类的作用
虽然了解接口的含义及作用,但是在实际应用中一直想不通:SSH框架中Service层和DAO层中的接口类有什么实际作用?
如果需求变更小,不需要修改方法名、参数列表和返回值,那么修改实现中的方法就不会影响其他地方的调用,跟有没有接口无关。
如果需求变更大,需要修改方法名、参数列表和返回值,那么就需要先改接口,再改实现,这种情况下其他地方的引用也会受到影响,也跟有没有接口无关。
这样的话接口岂不是没有起到什么作用吗?反而很累赘的感觉。。。
望有经验的高手介绍一下,最好能举个实际的例子,谢谢!! SSH 接口 面向接口 面向接口变成
[解决办法]
LZ理解完全正确,修改函数签名,的确需要你重新修改接口和实现类,面向接口设计并不是简单的方法,而是将一间事物进行抽象,通过接口表达出来,没有实现的情况下,面向接口是让程序进行解耦,在所谓的SSH,服务层DAO都是用接口来表达目的不在于修改函数签名的时候带来方便,而是在替换持久层,迁移业务代码到分布式系统中使用,其增强的是系统的横向扩展能力,而不是纵向的。。。
[解决办法]
简单说下:
以spring为例,ioc和aop,ioc后 就一定得是aop的思想,为什么呢。。。
我们的实例类是在配置文件中,代码中直接getbean();利用反射生成对象实例赋值给一个变量。。。
那么赋值给的这个变量类型是在代码中写的,如果不是个接口或者抽象类型,而是具体实例,那么后续
你把配置文件中的实例换掉了,在不改代码的情况下,就类型错误了。。
总的来说:为了满足后续只增加代码,改配置文件,而不是改原来的代码。
这样系统原有改动少,减少了出错的几率。