客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
话不多说上代码
定义一个动物的接口 IAnimal
public interface IAnimal {
void fly();
void swim();
}
定义一个Dog 实现这个接口
public class Dog implements IAnimal {
@Override
public void fly() {
}
@Override
public void swim() {
}
}
很明显, 狗是不会飞的,所以我们应当把这个接口拆分开来
public interface IFlyAnimal {
void fly();
}
public interface ISwimAnimal {
void swim();
}
重新定义Dog
public class Dog2 implements ISwimAnimal {
@Override
public void swim() {
}
}
天鹅会飞也会游泳
public class Swan implements IFlyAnimal, ISwimAnimal{
@Override
public void fly() {
}
@Override
public void swim() {
}
}
这样就做到了接口的隔离, 用聚合隔离接口的方式取代一个接口中定义大量的方法
- 接口隔离原则与单一职责原理的区别
- 单一职责原理是指类或接口的职责是单一的, 强调的是职责,比如一个接口里面可以有一个也可以有很多个方法,只要它的职责是统一的就OK.
- 接口隔离原则只是针对接口的,注重对接口依赖的隔离,主要针对抽象,针对程序整体框架的构建.
采用接口隔离原则对接口进行约束时,要注意以下几点:
- 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
- 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
- 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
网友评论