朝着理想坚实迈进_坚实原则:接口隔离原则

朝着理想坚实迈进

以前,我们研究了liskov替代原理。 下一个原则是接口隔离 。 接口隔离原则(ISP)指出,不应强迫任何客户端依赖其不使用的方法。

想象一下,在我们的代码库中有很多方法的接口,尽管只有一部分方法被实现,但我们的许多类都实现了该接口。

在我们的案例中,运动员界面是一个具有运动员某些动作的界面。

package com.gkatzioura.solid.segragation;

public interface Athlete {

    void compete();

    void swim();

    void highJump();

    void longJump();

}

我们添加了比赛方法,还添加了一些额外的方法,例如游泳highJump和longJump。
假设JohnDoe是一名游泳运动员。 通过实现Athlete接口,我们必须实现JohnDoe永远不会使用的诸如highJump和longJump之类的方法。

package com.gkatzioura.solid.segragation;

public class JohnDoe implements Athlete {

    @Override 
    public void compete() {
        System.out.println("John Doe started competing");
    }

    @Override 
    public void swim() {
        System.out.println("John Doe started swimming");
    }

    @Override 
    public void highJump() {
    }

    @Override 
    public void longJump() {
    }
}

对于可能是田径运动员跳高和跳远比赛的另一位运动员,也会出现相同的问题。
我们将遵循界面隔离原则,并重构原始界面,并创建另外两个界面,一个用于跳跃运动员,另一个用于游泳运动员。

package com.gkatzioura.solid.segragation;

public interface SwimmingAthlete extends Athlete {

    void swim();

}
package com.gkatzioura.solid.segragation;

public interface JumpingAthlete extends Athlete {

    void highJump();

    void longJump();

}

因此,John Doe不必执行他无法执行的动作。

package com.gkatzioura.solid.segragation;

public class JohnDoe implements SwimmingAthlete {

    @Override
    public void compete() {
        System.out.println("John Doe started competing");
    }

    @Override
    public void swim() {
        System.out.println("John Doe started swimming");
    }

}

您可以在github上找到源代码。 最后一个原则是依赖倒置原则。

另外,我还编写了备忘单,其中包含有关扎实原则的摘要。
链接中注册以接收它。

翻译自: https://www.javacodegeeks.com/2018/02/solid-principles-interface-segregation-principle.html

朝着理想坚实迈进

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值