设计模式七大原则 - 接口隔离原则

2022-11-24  本文已影响0人  夹板儿孩

接口隔离原则

目的: 实现接口的客户端不应该实现或依赖它不需要的方法

举个例子

有如下一个大的接口 Interface1,其中分别有三个方法

  1. power(): void // 动力
  2. rotate(): void // 旋转
  3. gear(): void // 换挡

现在我们只需要一个发动机、一个轮胎、一个变速箱造一辆汽车。分别是

Engine.java implements Interface1 // 发动机

Gearbox.java implements Interface1 // 变速箱

Wheel.java implement Interface1 // 轮胎

如果按这个方式去实现这个类,那么他们三个类中都将需要实现他们并不需要的方法。

发动机,它只需要输出动力,它不能旋转,也不能换挡

变速箱,它只需要换挡,它不能输出动力,也不能旋转

轮胎,它只需要旋转,他不能输出动力,也不能换挡

这样去做,那造出的车,就多了很多不必要的功能,增加了它的难度,也增加了复杂度

这时候就需要用到接口隔离原则。

我们只需要将这个 Interface1 接口拆分成三个接口,分别是

Engine 发动机

public interface Engine {
    /**
     * 输出动力
     * @return 动力
     */
    int power();
}

Gearbox 变速箱

public interface Gearbox {
    /**
     * 切换档位
     * @return 档位
     */
    int gear();
}

Wheel 轮胎

public interface Wheel {
    /**
     * 旋转
     * @return 旋转速度
     */
    double rotate();
}

三个接口都实现好了,我们只需要车子实现了这三个功能,那么这辆车的模型就算是建造完了

Car 汽车模型

public class Car implements Engine, Gearbox, Wheel{
    @Override
    public int power() {
        return 3000;  // 输出动力
    }

    @Override
    public int gear() {
        return 5;  // 切换档位
    }

    @Override
    public double rotate() {
        return power() / gear() * 0.16; // 档位切换后轮胎的转速
    }

    public double speed() {
        return rotate();     // 行驶的速度
    }
}

创造汽车

/**
 * 接口隔离原则
 */
public class Main {
    public static void main(String[] args) {
        Car car = new Car();
        System.out.println("汽车动力: " + car.power());
        System.out.println("汽车档位: " + car.gear());
        System.out.println("汽车速度: " + car.speed());
    }
}

上一篇 下一篇

猜你喜欢

热点阅读