六大设计原则之接口隔离原则
定义:客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上
问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须实现他们不需要的办法。
解决方案:将接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系,也就是采取接口隔离原则
类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现,类C依赖接口I中的方法1、方法4,方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在用不着的方法(图中红色标记),但是都是实现了接口I,也必须要实现这些用不着的方法。可见,接口国语臃肿,不管对于依赖它的类有没有用处,实现类中都必须去实现这些方法。如果将这个设计修改为符合接口隔离原理,就必须对接口I进行拆分。
接口隔离原则的含义:建立单一接口,不要建立庞大臃肿的接口帝国。尽量细化接口,接口中的方法尽量少(类似于单一职责原则)。也就是说,依赖几个专用的接口比依赖所有接口更灵活。
区别:
- 单一职责原则注重的是职责(业务逻辑,或者对象能够承担的责任,并以某种行为方式来执行);而接口隔离原则注重的是对接口依赖的隔离。
- 单一职责原则主要是约束类,其次是接口和方法。它针对的是程序中的实现和细节;而接口隔离原则主要是约束接口,主要针对抽象,针对程序整体框架的构建。
接口隔离原则,一定要适度,接口设计的太大或者太小都不好。