Interface Segregation Principle 接口隔离原则
简介
定义:用多个专门的接口,而不是使用单一的总接口,客户端不应该依赖它不需要的接口
主要核心思想
尽量保证接口的纯洁性,客户端不应该依赖不需要的接口
优点
- 符合我们常说的高内聚、低耦合的设计思想
- 使得类具有很好的可读性、可扩展性和可维护性
实践案例
动物行为为例
V1:
public interface IAnimal {
void eat();
void fly();
void swim();
}
public class Dog implements IAnimal {
@Override
public void eat() {
System.out.println("Dog can eat");
}
@Override
public void fly() {
System.out.println("Dog can't fly");
}
@Override
public void swim() {
System.out.println("Dog can swim");
}
}
V2:
public interface IEatAnimal {
void eat();
}
public interface IFlyAnimal {
void fly();
}
public interface ISwimAnimal {
void swim();
}
public class Dog implements IEatAnimal, ISwimAnimal{
@Override
public void eat() {
System.out.println("Dog can eat");
}
@Override
public void swim() {
System.out.println("Dog can swim");
}
}
IAnimal 包含多项动物行为,会显得臃肿,而将这些动物行为分别定义为接口,哪些动物具备这些行为就实现对应的接口类重写其方法即可