在学习接口隔离原则之前首先我们必须明白接口的概念。java中的接口是一些方法特征集合
其方法并未实现。
接口有其两种含义:
1、java接口:java语言中存在的结构,具有特定的语法和结构。
说的直白一点就是对象接口,java中的类通过关键字new产生的一个实例,他是对
一种类型的事物的描述,类就是“实例化”对象的接口
2、接口:一个类所具有的方法的特征集合,是一种逻辑上的抽象。
这种接口就是通过interface关键字定义的接口了
理解了这两个概念后,再来理解接口隔离原则。
接口隔离原则定义:
客户端不应该依赖于他不需要的接口;一个类对另一个类的依赖应该建立在最小
的接口之上。概括的来讲就是接口的设计不要过于“臃肿”、“庞大”,也就是接口的方法不宜过多
如何理解呢?举一个实例吧,先来看接口设计不合理的类图
根据上述类图可以知道,该接口的设计过于臃肿了,因为只要是接口中出现的方法,不管对依赖
与他的类来说有没有用处都必须实现它,这显然是一种不好的设计。根据接口隔离原则的定义,我们
可以将该接口分散成两个接口如下图:
接口隔离原则就是要建立单一的接口,不要建立庞大的接口,尽量细化接口,接口中的方法尽量精简
我们应该为同属于一个产品结构的类去建立接口,而不是为所有类建立接口。接口设计是对外部设定的
契约。通过接口隔离原则,可以提高系统的灵活性和可维护性。
想一想前面的单一责任原则,也许会觉得他们是一样的。其实不然。
1、单一职责原则注重的是类的职责,而接口隔离原则注重的是类对接口依赖的隔离。
2、单一职责原则是为了约束类的,它针对的是类的“行为”,注重其实现细节。而接口隔离原则
主要约束接口,强调程序整体框架的构建。
不过采用接口约束原则进行接口设计的时候需注意:
● 接口尽量小,但是也有一个限度。(接口太小造成接口数量过多)
● 设计接口的时候,只为依赖于他的类提供其需要的方法。
● 提高内聚,减少对外的交互。