客户端不应该依赖于它不需要的接口
接口隔离原则与单一职责原则有些类似,接口隔离原则更多的是接口层面的,单一职责更趋向于类层面的,但是它们本质思想都是尽可能的减少不需要的功能,避免带来影响。如果接口隔离原则被破坏,客户端被迫依赖他们不使用的接口时,代码就会变得紧密耦合。
为了更好的理解这个原则,下面举一个汽修工的例子来说明。
这里小汽车类Car需要两个方法,维修repair()和出售sell()。修理工类Mechanic依赖于ICar的repair()方法,但不需要sell()方法,由于ICar并未遵守接口隔离原则,导致Mechanic如果某天需要维修IBus的时候就要修改类结构,这就违反了开闭原则。
如果我们创建一个仅和Mechanic类所需方法相关的接口,如下图,就可以避免修改。
使用接口隔离原则可以让我们程序耦合不那么紧密。