zoukankan      html  css  js  c++  java
  • 接口隔离原则

    接口隔离原则


    基本介绍:

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


    例如以下场景:

      

     当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. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。 
  • 相关阅读:
    Live2d Test Env
    Live2d Test Env
    Spring Boot GraphQL 实战 02_增删改查和自定义标量
    Spring Boot GraphQL 实战 01_快速入门
    【MacBook】 SSH使用
    一个神奇的没有springboot注释的api文档生成器---JApiDocs
    Spring Cloud Alibaba 06:Gateway服务网关
    leetcode-300. 最长递增子序列
    leetcode-309. 最佳买卖股票时机含冷冻期
    leetcode-121. 买卖股票的最佳时机
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/15219546.html
Copyright © 2011-2022 走看看