Java设计模式六大原则(4):接口隔离原则

1.定义:一个类不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

2.问题:类A通过接口I依赖类B,类 C通过接口I依赖D,如果接口I对于类A和类B不是最小接口,则类B和类D必须去实现他们不需要的方法。

3.解决:将接口I拆分为独立的接口,类A和类C分别继承他们需要的接口,这样也就是接口隔离。

接口隔离的原则建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。即:我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。

4.实例:(将接口分解成更小的)

interface I1 {  
       public void method1();  
   }  
     
   interface I2 {  
       public void method2();  
       public void method3();  
   }  
     
   interface I3 {  
       public void method4();  
       public void method5();  
   }  
     
   class A{  
       public void depend1(I1 i){  
           i.method1();  
       }  
       public void depend2(I2 i){  
           i.method2();  
       }  
       public void depend3(I2 i){  
           i.method3();  
       }  
   }  
     
   class B implements I1, I2{  
       public void method1() {  
           System.out.println("类B实现接口I1的方法1");  
       }  
       public void method2() {  
           System.out.println("类B实现接口I2的方法2");  
       }  
       public void method3() {  
           System.out.println("类B实现接口I2的方法3");  
       }  
   }  
     
   class C{  
       public void depend1(I1 i){  
           i.method1();  
       }  
       public void depend2(I3 i){  
           i.method4();  
       }  
       public void depend3(I3 i){  
           i.method5();  
       }  
   }  
     
   class D implements I1, I3{  
       public void method1() {  
           System.out.println("类D实现接口I1的方法1");  
       }  
       public void method4() {  
           System.out.println("类D实现接口I3的方法4");  
       }  
       public void method5() {  
           System.out.println("类D实现接口I3的方法5");  
       }  
   }

5.注意:

(1).接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。

(2).为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。

(3).提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

(4).运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。

注:个人学习随记!

猜你喜欢

转载自blog.csdn.net/wanjinYoung/article/details/81535655