spring 为什么要先写接口,再写实现类?
例如我的配置文件<beanid="/userAction"class="UserAction"><propertyid="userService"class="UserS...
例如我的配置文件
<bean id="/userAction" class="UserAction">
<property id="userService" class="UserServiceImpl"/>
</bean>
在UserAction代码中
private UserService userService;
set方法...{ }
定义这个接口的意义是什么?
为什么我要用接口的向上转型来调用,意义何在? 展开
<bean id="/userAction" class="UserAction">
<property id="userService" class="UserServiceImpl"/>
</bean>
在UserAction代码中
private UserService userService;
set方法...{ }
定义这个接口的意义是什么?
为什么我要用接口的向上转型来调用,意义何在? 展开
7个回答
展开全部
首先你要理解OOP的思想,是面向接口编程.
什么叫面向接口编程呢?
假如你买了一个多媒体设备,它给了你一个遥控,你想要知道的只是按什么按钮,它会播放什么
而遥控里面是怎样运行,还有屏幕里面怎么工作,你想知道吗?
你完全不会去想了解.
那如果多媒体设备需要更新,比如优化内部运行效率,
但是优化完了,遥控的按钮不变,设备的所有操作方式都不变,按这个按钮还是显示相同的东西
那内部怎么变化你完全不需要在意.
这就是面向接口编程.
无论类的内部怎么实现,它对外的接口不变,那它的使用方式就不会变
假设Main类要使用D类的一个draw的方法,
方法名叫 draw():void
不管draw里面是怎样的,Main类里就是这样用,
那么你就从这个接口出发,里面怎么实现是D类的事了,Main类只关心怎么用而已.
其他类要使用它,还是相同
这就大大减少了维护的成本.
因为如果D类出问题,Main类是完全不用改变的.
从上观察,公开的接口越多,维护成本就越大.
维护就越麻烦.所以我们先写接口,定死了公开的接口,
那维护就很方便,出错也只是一个类的事,而不用同时修改多个协同类
什么叫面向接口编程呢?
假如你买了一个多媒体设备,它给了你一个遥控,你想要知道的只是按什么按钮,它会播放什么
而遥控里面是怎样运行,还有屏幕里面怎么工作,你想知道吗?
你完全不会去想了解.
那如果多媒体设备需要更新,比如优化内部运行效率,
但是优化完了,遥控的按钮不变,设备的所有操作方式都不变,按这个按钮还是显示相同的东西
那内部怎么变化你完全不需要在意.
这就是面向接口编程.
无论类的内部怎么实现,它对外的接口不变,那它的使用方式就不会变
假设Main类要使用D类的一个draw的方法,
方法名叫 draw():void
不管draw里面是怎样的,Main类里就是这样用,
那么你就从这个接口出发,里面怎么实现是D类的事了,Main类只关心怎么用而已.
其他类要使用它,还是相同
这就大大减少了维护的成本.
因为如果D类出问题,Main类是完全不用改变的.
从上观察,公开的接口越多,维护成本就越大.
维护就越麻烦.所以我们先写接口,定死了公开的接口,
那维护就很方便,出错也只是一个类的事,而不用同时修改多个协同类
展开全部
简单点就是为了程序的拓展性。
一个接口多个实现吧?
调用的时候是拿接口调的,具体实现接口来指定。
比如你现在项目里有三个类实现了数据库连接接口。
那么你想用什么数据库就把接口的实现类改一下就ok。而不用去改具体的实现。
一个接口多个实现吧?
调用的时候是拿接口调的,具体实现接口来指定。
比如你现在项目里有三个类实现了数据库连接接口。
那么你想用什么数据库就把接口的实现类改一下就ok。而不用去改具体的实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
并不是一定要写接口.
接口的意义在于多态.
这里你的UserAction里的属性为UserService,你可以在配置文件中给该属性指定任意一个你实现了该接口的类.这样便于以后的维护和扩展,如果你的UserService变了,你只需要在配置文件里改下配置就行了,而不需要改java代码.
接口的意义在于多态.
这里你的UserAction里的属性为UserService,你可以在配置文件中给该属性指定任意一个你实现了该接口的类.这样便于以后的维护和扩展,如果你的UserService变了,你只需要在配置文件里改下配置就行了,而不需要改java代码.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义接口的作用基本上是运用了多态,可以动态的调用实现类,实现类可以方便的更改、替换,只需要改变配置文件就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有一桶水,每个人拿自己的管子去接水,是可以接的,但是要有很多管子,每根都要插进桶里
但是,如果桶上有一个口 可以接任何一个管子是不是很方便
但是,如果桶上有一个口 可以接任何一个管子是不是很方便
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询