武威做网站的,公司网站免费建立,多少钱能运营一个网站,网站收录优化基本介绍
客户端不应该依赖它不需要的接口#xff0c;即一个类对另一个类的依赖应该建立在最小的接口上先看一张图: 类A通过接口Interface1 依赖类B#xff0c;类C通过接口Interface1 依赖类D#xff0c;如果接口Interface1对于类A和类C来说不是最小接口#xff0c;那么类…基本介绍
客户端不应该依赖它不需要的接口即一个类对另一个类的依赖应该建立在最小的接口上先看一张图: 类A通过接口Interface1 依赖类B类C通过接口Interface1 依赖类D如果接口Interface1对于类A和类C来说不是最小接口那么类B和类D必须去实现他们不需要的方法。按隔离原则应当这样处理:
将接口Interface1拆分为独立的几个接口类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则
传统代码
/*** author zhupanlin* version 1.0* description: TODO* date 2024/4/9 10:47*/
public class Segregation1 {public static void main(String[] args) {}}interface Interface1 {void operation1();void operation2();void operation3();void operation4();void operation5();
}
class B implements Interface1{Overridepublic void operation1() {System.out.println(B 实现了 operation1);}Overridepublic void operation2() {System.out.println(B 实现了 operation2);}Overridepublic void operation3() {System.out.println(B 实现了 operation3);}Overridepublic void operation4() {System.out.println(B 实现了 operation4);}Overridepublic void operation5() {System.out.println(B 实现了 operation5);}
}class D implements Interface1{Overridepublic void operation1() {System.out.println(D 实现了 operation1);}Overridepublic void operation2() {System.out.println(D 实现了 operation2);}Overridepublic void operation3() {System.out.println(D 实现了 operation3);}Overridepublic void operation4() {System.out.println(D 实现了 operation4);}Overridepublic void operation5() {System.out.println(D 实现了 operation5);}
}// A类通过接口Interface 依赖使用B类但是只会用到123方法
class A {public void depend1(Interface1 i){i.operation1();}public void depend2(Interface1 i){i.operation2();}public void depend3(Interface1 i){i.operation3();}
}// C类通过接口Interface 依赖使用D类但是只会用到145方法
class C{public void depend1(Interface1 i){i.operation1();}public void depend4(Interface1 i){i.operation4();}public void depend5(Interface1 i){i.operation5();}
}
应传统方法的问题和使用接口隔离原则改进
类A通过接口Interface1依赖类B类C通过接口Interface1 依赖类D如果接口Interface1 对于类A和类C来说不是最小接口那么类B和类D必须去实现他们不需要的方法
将接口Interface1拆分为独立的几个接口类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则
接口Interface1中出现的方法根据实际情况拆分为三个接口 代码示例
/*** author zhupanlin* version 1.0* description: TODO* date 2024/4/9 10:47*/
public class Segregation1 {public static void main(String[] args) {}}interface Interface1 {void operation1();void operation2();void operation3();void operation4();void operation5();
}
class B implements Interface1{Overridepublic void operation1() {System.out.println(B 实现了 operation1);}Overridepublic void operation2() {System.out.println(B 实现了 operation2);}Overridepublic void operation3() {System.out.println(B 实现了 operation3);}Overridepublic void operation4() {System.out.println(B 实现了 operation4);}Overridepublic void operation5() {System.out.println(B 实现了 operation5);}
}class D implements Interface1{Overridepublic void operation1() {System.out.println(D 实现了 operation1);}Overridepublic void operation2() {System.out.println(D 实现了 operation2);}Overridepublic void operation3() {System.out.println(D 实现了 operation3);}Overridepublic void operation4() {System.out.println(D 实现了 operation4);}Overridepublic void operation5() {System.out.println(D 实现了 operation5);}
}// A类通过接口Interface 依赖使用B类但是只会用到123方法
class A {public void depend1(Interface1 i){i.operation1();}public void depend2(Interface1 i){i.operation2();}public void depend3(Interface1 i){i.operation3();}
}// C类通过接口Interface 依赖使用D类但是只会用到145方法
class C{public void depend1(Interface1 i){i.operation1();}public void depend4(Interface1 i){i.operation4();}public void depend5(Interface1 i){i.operation5();}
}