接口隔离
接口隔离原则
The dependency of one class to another one should depend on the smallest possible interface.
接口隔离原则说的是客户端不应该被迫依赖于它不使用的方法。简单来说就是更小和更具体的瘦接口比庞大臃肿的胖接口好。不要对外暴露没有实际意义的接口。换一种说法就是类间的依赖关系应该建立在最小的接口上。这样说好像更难懂。胖接口的职责过多,很容易违反单一职责原则,也会导致实现类不得不抛出
我们通过一个例子来说明。我们知道在
接口之所以存在,是为了解耦。开发者常常有一个错误的认知,以为是实现类需要接口。其实是消费者需要接口,实现类只是提供服务,因此应该由消费者(客户端)来定义接口。理解了这一点,才能正确地站在消费者的角度定义
案例:砖头
砖头
public class Brick {
private int length;
private int width;
private int height;
private int weight;
public void build() {
//...包工队盖房
}
public void defense() {
//...正当防卫
}
}
如果直接提取以下接口,这就是
public interface BrickInterface {
void buildHouse();
void defense();
}
普通大众需要的是可以防卫的武器,并不需要用砖盖房子。当普通大众
public interface BuildHouse {
void build();
}
public interface StrickCompetence {
void defense();
}
public class Brick implement BuildHouse, StrickCompetence {
}
有了
// Worker.java
brick.build();
// Person.java
brick.strike();