- 定义:用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口
- 一个类对一个类的依赖应该建立在最小的接口上
- 建立单一接口,不要建立庞大臃肿的接口
- 最重要的点:注意适度原则,一定要适度
- 优点:高内聚,低耦合,从而使类具有很好的可读性,可扩展性和可维护性
示例:定义一个IAnimal的接口
public interface IAnimal {
void eat();
void fly();
void swim();
}
定义两个实体类Dog和Bird,实现IAnimal的接口,会发现Dog不会fly,但是还必须实现fly接口如下:
public class Dog implements IAnimal{
public void eat() {
}
public void fly() {
}
public void swim() {
}
}
public class Bird implements IAnimal{
public void eat() {
}
public void fly() {
}
public void swim() {
}
}
那么根据接口隔离的原则,如何改造呢?将IAnimal分为IFlyAnimal,ISwimAnimal,IEatAnimal。然后Dog只需要实现IEatAnimal和ISwimAnimal接口
public interface IEatAnimal {
void eat();
}
public interface IFlyAnimal {
void fly();
}
public interface ISwimAnimal {
void swim();
}
那么Dog类只需要实现IEatAnimal和ISwimAnimal接口
public class Dog implements ISwimAnimal,IEatAnimal{
public void eat() {
}
public void swim() {
}
}
注意:接口隔离和上一篇的单一职责,看起来有点像。但是接口隔离更注重于松耦合,从框架的设计角度思考,重点在于接口。单一职责可以是类,方法,重在高内聚,专一的人做专业的事