杭州网站优化方案,注册10万公司实缴多少钱,电商网站建设策划书,写作网站排行榜朝着理想坚实迈进以前#xff0c;我们研究了liskov替代原理。 下一个原则是接口隔离 。 接口隔离原则#xff08;ISP#xff09;指出#xff0c;不应强迫任何客户端依赖其不使用的方法。 想象一下#xff0c;在我们的代码库中有很多方法的接口#xff0c;尽管只有一部分… 朝着理想坚实迈进 以前我们研究了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 {Overridepublic void compete() {System.out.println(John Doe started competing);}Overridepublic void swim() {System.out.println(John Doe started swimming);}} 您可以在github上找到源代码。 最后一个原则是依赖倒置原则。 另外我还编写了备忘单其中包含有关扎实原则的摘要。 在链接中注册以接收它。 翻译自: https://www.javacodegeeks.com/2018/02/solid-principles-interface-segregation-principle.html朝着理想坚实迈进