天天看點

設計原則 - 接口隔離原則

目錄

  • ​​概念​​
  • ​​編碼​​
    • ​​執行個體​​
    • ​​接口隔離原則的實作​​
    • ​​源碼​​

概念

  • 定義:用多個專門的接口,而不适用單一的總接口,用戶端不應該依賴它不需要的接口
  • 一個類對一個類的依賴應該建立在最小的接口上
  • 建立單一接口,不要建立龐大臃腫的接口
  • 盡量細化接口,接口中的方法盡量少
  • 注意适度原則,一定要适度
  • 優點:符合常說的高内聚低耦合的設計思想,進而使類具有更好的可讀性、可擴充性和可維護性

編碼

執行個體

  • ​IAnimalAction.java​

/**
 * @Description 動物行為
 * @date Dec 7, 2021
 * @Version 1.0
 */
public interface IAnimalAction {

    /**
     * 吃
     */
    void eat();

    /**
     * 飛
     */
    void fly();

    /**
     * 遊泳
     */
    void swim();

}
      
  • ​Dog.java​

/**
 * @Description 狗
 * @date Dec 7, 2021
 * @Version 1.0
 */
public class Dog implements IAnimalAction {
    @Override
    public void eat() {

    }

    @Override
    public void fly() {

    }

    @Override
    public void swim() {

    }
}
      
  • ​Bird.java​

/**
 * @Description 鳥
 * @date Dec 7, 2021
 * @Version 1.0
 */
public class Bird implements IAnimalAction{
    @Override
    public void eat() {

    }

    @Override
    public void fly() {

    }

    @Override
    public void swim() {

    }
}
      
  • 類圖如下:
設計原則 - 接口隔離原則
  • 開發中經常會遇到這樣的問題,對于一個接口裡聲明的東西過多,且他們是不同類型的,這種接口是可以進一步細化的,通過實作單個接口來隔離實作就是接口隔離原則

接口隔離原則的實作

  • ​IEatAnimalAction.java​

/**
 * @Description 動物行為 - 吃
 * @date Dec 7, 2021
 * @Version 1.0
 */
public interface IEatAnimalAction {

    /**
     * 吃
     */
    void eat();

}
      
  • ​IFlyAnimalAction.java​

/**
 * @Description 動物行為 - 飛
 * @date Dec 7, 2021
 * @Version 1.0
 */
public interface IFlyAnimalAction {

    /**
     * 飛
     */
    void fly();

}
      
  • ​ISwimAnimalAction.java​

/**
 * @Description 動物行為 - 遊泳
 * @date Dec 7, 2021
 * @Version 1.0
 */
public interface ISwimAnimalAction {

    /**
     * 遊泳
     */
    void swim();

}
      
  • ​Dog.java​

/**
 * @Description 狗
 * @date Dec 7, 2021
 * @Version 1.0
 */
public class Dog implements IEatAnimalAction, ISwimAnimalAction {

    @Override
    public void swim() {

    }

    @Override
    public void eat() {

    }
}
      
  • ​Bird.java​

/**
 * @Description 鳥
 * @date Dec 7, 2021
 * @Version 1.0
 */
public class Bird implements IFlyAnimalAction{

    @Override
    public void fly() {

    }
}
      
  • 類圖變化如下
設計原則 - 接口隔離原則
  • 接口隔離原則與單一職責原則的差別:接口隔離原則注重的是對接口、依賴的隔離,單一職責限制的是類、接口、方法

源碼

​GitHub​

​​:​​https://github.com/Maggieq8324/design_pattern.git​​