-
1. 方便程序使用多态
例如,有方法需要一个集合类型的参数,将参数设置成List类型和设置成ArrayList类型相比,传参不仅是可以传ArrayList类型还可以是LinkedList类型,因此代码使用范围更广。 -
2. 代码扩展性更强
如果要扩展一个类中的方法,我们一般可以选择动态代理方式来对某些方法进行增强,但是动态代理的类需要实现接口,这也是面向接口编程的一大优势。 -
3. 降低了代码间耦合
例如:Computer类有一个IMobileStorage接口类型的成员变量,接口定义write和read方法,移动设备类FlashDisk、MP3Player类实现了IMobileStorage接口,那么计算机类Computer和FlashDisk、MP3Player就能关联成功,但是Computer并不知道自己的成员变量是什么具体类型,这就是所谓的“依赖接口,而不依赖于具体类”。JAVA中两个层面之间通过接口产生联系,此时接口相当于一个缓冲区(因其具体方法不确定),当业务发生改变,只改变实现类的代码即可,不需要改写后续代码,减少对整个项目系统的影响。