原因如下:
分别定义接口和实现类是java架构思想中的开闭原则(扩展开放,修改关闭)的体现,例如:
假如你这个注册刚开始是对国内用户开放,中国用户注册成功返回“注册成功”,随着业务扩展,需要海外用户开放,假如美国用户返回“register success”,如果你有接口,可以再美国的AmericaUserServiceImpl.java中实现一个UserService.java的接口,来定义美国用户的注册业务,而不是在之UserServiceImpl.java中增加if else来对不同逻辑进行处理,这样,后续如果某个地区的注册业务有变动,只需要修改对应地区的实现类,修改不会影响到其他地区的实现类,降低了耦合性。
那是不是所有的项目都应该用到这样思想呢?
对于小型项目来说,确实可以不用多写一个接口,直接写实现类就可以了。
接口+实现类是一种良好的编码习惯而已。就好像写代码时候的缩进和驼峰命名法。