接口隔离原则

接口隔离原则


基本介绍:

  客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口


例如以下场景:

  

 当ClassA需要实现接口interface1中的1、2、3方法时,在方法调用C

 当ClassB需要实现接口interface1中的1、4、5方法时,在方法调用D

class A{
    
  public void opt1(interface1 i){
    i.opt1();
}
    public void opt2(interface1 i){
    i.opt2();
}
  public void opt3(interface1 i){
    i.opt3();
}
}

class B{

  public void opt1(interface1 i){
    i.opt1();
}  
  public void opt4(interface1 i){
    i.opt4();
}
  public void opt5(interface1 i){
    i.opt5();
}
}

class C implements interface1{

      public void opt1(){

} 
  public void opt2(){

} 
  public void opt3(){

} 
//以下方法用不着,却必须实现,造成接口隔离原则破坏
  public void opt4(){

} 
  public void opt5(){

} 
}

class D implements interface1{

      public void opt1(){

} 
  public void opt4(){

} 
  public void opt5(){

} 
//以下方法用不着,却必须实现,造成接口隔离原则破坏
  public void opt2(){

} 
  public void opt3(){

} 
}

//示例
public class com{
    public static void main(){
        new A().opt1(new B());
}
}

上述代码中实现  C、D类 产生了冗余的实现方法,接口应该切分

例子如下:

  

 在进行粒度化拆分后,Class C、D就不会导致内部实现过多冗余的方法,同时接口是最小接口


注意事项:

  1. 接口尽量小,但是要有限度
  2. 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
  3. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。 
原文地址:https://www.cnblogs.com/wuyiyuan/p/15219546.html