接口隔离原则:设计接口时,接口的抽象应该是有意义的



反例:动物接口中定义的方法并不是被所有动物需要的



interface  Animal{
void eat();
void fly();
void swim();
}
class Bird implements Animal{
@Override
public void eat() {
System.out.println("吃");
}
@Override
public void fly() {
System.out.println("飞");
}
//======鸟不会游泳,并不需要实现
@Override
public void swim() {
System.out.println("游泳");
}
}



正例:接口抽象出有意义的层级,供需要的类去实现



interface  Flyable{
void fly();
}
interface Swimable{
void swim();
}
interface Eatable{
void eat();
}
class Bird implements Flyable,Eatable{
.....
}
class Dog implements Swimable,Eatable{
.....
}



客户端不应该依赖那些它不需要的接口。

一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可


 

 


作者:秋华