接口隔离原则是面向对象设计原则中的一条原则,它的核心思想是将大接口拆分为多个小接口,客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上,接口应该具有单一功能
,不应该包含不相关或不需要的方法,以便提高系统的灵活性和可维护性。它同时也要求接口的设计应该稳定,一旦设计好后,就不应该频繁地进行修改。
实例:
假设我们定义图形的基本操作有绘制,移动,缩放,对于某些特殊的功能
,并不是每个图形所必须的,那么根据接口隔离原则,我们不应该将其特殊的功能定义在包含图形基本操作的接口中,而是写在一个单独的接口中
,以便需要该功能的类可以实现该接口
// Shape接口---定义图形的基本操作
interface Shape {
void draw();
void move(int x, int y);
void resize(int width, int height);
}
// Rotatable接口---“特殊功能"图形的旋转
interface Rotatable {
void rotate(double angle);
}
// 矩形类不需要实现新添加的旋转功能,不需要实现Rotatable接口
class Rectangle implements Shape {
// 实现绘制、移动和缩放方法...
@Override
public void draw() {
// 绘制矩形...
}
@Override
public void move(int x, int y) {
// 移动矩形...
}
@Override
public void resize(int width, int height) {
// 缩放矩形...
}}
// 圆形类---需要实现新添加的旋转功能,需要实现Rotatable接口
public class Circle implements Shape, Rotatable {
@Override
public void draw() {
// 绘制圆形...
}
@Override
public void move(int x, int y) {
// 移动圆形...
}
@Override
public void resize(int width, int height) {
// 缩放圆形...
}
@Override
public void rotate(double angle) {
// 旋转圆形...
}
}