为什么定义对象的一组操作使用的是接口,而不是类
或者这样讲,为什么User.java的操作集合定义在 public interface IUserService{} 中,可以定义在 public class UserService{}中么?
我本人在面向对象的设计过程中,操作也都是定义在接口中,但是突然发现这个问题我并不能向别人表述清晰。
也许大家会说,接口有多个实现类,根据不同的需求指定不同的实现类,程序更容易扩展。但这并不能说服我,原因如下,
接口可以有多个实现类,但是接口实例化的时候需要指定具体实现类。
UserService也有多个并行的类,在不同的需求时,选择不同的类,效果也一样。
接口是规范、约束; 规定了实现类必须实现接口定义的方法;
通常一个项目是多个开发人员协同完成,有架构人员先定义好主要的业务接口;
比如说Map接口;如果不用接口;有可能HashMap里面添加元素是put方法,然后HashTable里面添加元素是add方法,你觉得这样好吗?
对于使用者而言,某个类实现了一个接口, 你就知道他拥有这个接口的功能;
在您的回复中我了解到:在团队协作开发时,接口用于约定方法的命名,在设计阶段使用。这对我很有用,这里先结贴,分数给您哈。使用接口是否还有其它实际的优点我希望能够继续挖掘。
谢谢您的回复,我将完善我的问题继续提问,希望您继续关注。
对。但接口更简单,而且更灵活,比如多重继承。
如果过程处理逻辑往往就不会那么了,因为必然要有过程实现调用 待实现的过程。
接口可以有多个实现类,但是接口实例化的时候需要指定具体实现类。
========>>>>需求变化时,需要换个具体实现类,这就需要修改代码,这就需要重新编译代码,这就需要重新部署程序,,,,。
百度:设计模式 工厂模式 策略模式
百度:控制反转 依赖注入
我的理解时 这样的:
1》接口时更灵活的 , java只支持单继承 (extends),支持多实现(implements)
2 》不知道你有没有了解过设计模式,里面第一个就是举例说鸭子的故事,这个故事说明要针对接口编程。至于好处,我的理解是:如果是类的继承 所有继承该类的都会有同样的功能,可是接口就不一样,需要你自己去实现自己的功能。
3 》在实例化的时候,估计也有点区别,这个没找到资料,自己的猜测。
你可以想想为什么主板规格写的不是支持安装西数硬盘,而是写支持SATA接口。