接口隔离原则(Interface Segregation Principle,简称ISP)是面向对象设计中的一个原则,它规定一个类对另一个类的依赖应该建立在最小的接口上。简而言之,一个类不应该被迫依赖它不使用的接口。这可以防止类因为实现不需要的接口而变得庞大臃肿。

反例:

interface Worker {
    void work();
    void eat();
}

class Robot implements Worker {
    @Override
    public void work() {
        // 实现工作逻辑
    }

    @Override
    public void eat() {
        // 实现吃饭逻辑
    }
}

在这个例子中,Worker 接口定义了两个方法:work 和 eat。Robot 类实现了这个接口,但实际上,机器人并不需要吃饭。由于接口强制实现了 eat 方法,Robot 类被迫实现了一个它不需要的方法。

正例:

interface Workable {
    void work();
}

interface Eatable {
    void eat();
}

class Robot implements Workable {
    @Override
    public void work() {
        // 实现工作逻辑
    }
}

class Human implements Workable, Eatable {
    @Override
    public void work() {
        // 实现工作逻辑
    }

    @Override
    public void eat() {
        // 实现吃饭逻辑
    }
}

在正例中,将原来的 Worker 接口拆分成两个接口:Workable 和 Eatable。现在,Robot 类只需要实现 Workable 接口,而 Human 类既实现了 Workable 接口又实现了 Eatable 接口。这样就遵循了接口隔离原则,每个类只需要依赖于它真正需要的接口。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注