目錄
- 概念
- 編碼
-
- 執行個體
- 接口隔離原則的實作
- 源碼
概念
- 定義:用多個專門的接口,而不适用單一的總接口,用戶端不應該依賴它不需要的接口
- 一個類對一個類的依賴應該建立在最小的接口上
- 建立單一接口,不要建立龐大臃腫的接口
- 盡量細化接口,接口中的方法盡量少
- 注意适度原則,一定要适度
- 優點:符合常說的高内聚低耦合的設計思想,進而使類具有更好的可讀性、可擴充性和可維護性
編碼
執行個體
-
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