什么是接口隔离?
接口做作为面向抽象编程中的一环,有无可替代的地位。那么,什么样的接口设计才算是好的设计,或者说如何设计一个好的接口?
就接口的设计而言,我认为”接口隔离(简称ISP)”原则已经足够.现在我们重新来回忆下:
Clients should not be forced to depend upon interfaces that they don’t use
The dependency of one class to another one should depend on the smallest possible interface.
大意是:客户端不应该强行依赖他不需要的接口.类之间的依赖关键应该建立在最小的接口上.简单的来说,就是接口的设计在满足客户端需求的基础上要尽可能的小(方法少),也就是接口中提供的方法应该都是客户端所需要的.
比如说类A通过接口I依赖类B的test1()和test2()方法,类C通过接口I依赖类D的test3()和test4(),那么此时结构是:
不难发现,此时I对于类A和类B来都分别提供多余的方法,也就是I对两者来说都不是最小接口.而实际上我们所需要的是这样的结构:
也就是我们需要将原有的接口I拆分成类A和类B各自需要的接口I和接口J.现在我们在看看”接口隔离”这个词,不难发现:
接口隔离的目标是使得每个接口尽可能的保持小而美,而接口隔离恰好描述的是实现”小而美”的方法,即通过对接口按照客户端要求进行合理的的拆分.
到这里有写同学迷惑:难道我们