接口隔离原则笔记
程序员文章站
2024-03-16 22:12:58
...
百度百科解释"客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上."
看如下一个例子:
public interface IAnimalAction {
void eat();
void fly();
void swim();
}
狗类
public class Dog implements IAnimalAction {
@Override
public void eat() {
}
@Override
public void fly() {
}
@Override
public void swim() {
}
}
狗类要实现动物的功能,就必须实现动物接口的全部方法。但狗不会飞,你见个狗会飞吗?通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。
改进如下:
将eat()和swim()方法抽取出来,各作为一个接口。
public interface IEatAnimalAction {
void eat();
}
public interface ISwimAnimalAction {
void swim();
}
狗类要游泳,吃东西,只需实现ISwimAnimalAction,IEatAnimalAction接口即可。
public class Dog implements ISwimAnimalAction,IEatAnimalAction {
@Override
public void eat() {
}
@Override
public void swim() {
}
}
结构图如下:
上一篇: 单一职责原则笔记
下一篇: MySQL普通索引和唯一索引的区别