接口隔离原则是面向对象设计原则中的一条原则,它的核心思想是将大接口拆分为多个小接口,客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上,接口应该具有单一功能,不应该包含不相关或不需要的方法,以便提高系统的灵活性和可维护性。它同时也要求接口的设计应该稳定,一旦设计好后,就不应该频繁地进行修改。
实例:
假设我们定义图形的基本操作有绘制,移动,缩放,对于某些特殊的功能
,并不是每个图形所必须的,那么根据接口隔离原则,我们不应该将其特殊的功能定义在包含图形基本操作的接口中,而是写在一个单独的接口中
,以便需要该功能的类可以实现该接口
// 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) { // 旋转圆形... } }