概念
- 定義:一個對象應該對其他對象保持最少的瞭解,又叫最少知道原則
- 核心觀念:類之間的解耦,儘量降低類與類之間的耦合
- 優點:降低類之間的耦合
- 強調:只和朋友(出現在成員變量、方法的輸入、輸出參數中的類成爲成員朋友類,而出現在方法體內部的類不屬於朋友類)交流,不和陌生人說話
編碼
實例
Boss
給Leader
下達獲取課程數的指令Boss.java
/**
* @Description Boss
* @date Dec 7, 2021
* @version 1.0
*/
public class Boss {
/**
* 課程數量指令
* @param teamLeader
*/
public void commandCheckNumber(TeamLeader teamLeader) {
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
teamLeader.checkNumberOfCourses(courseList);
}
}
TeamLeader.java
/**
* @Description 項目經理
* @date Dec 7, 2021
* @version 1.0
*/
public class TeamLeader {
/**
* 課程數量
* @param courseList
*/
public void checkNumberOfCourses(List<Course> courseList) {
System.out.println("在線課程的數量是:" + courseList.size());
}
}
Course.java
/**
* @Description 課程
* @date Dec 7, 2021
* @version 1.0
*/
public class Course {
}
Test.java
/**
* @Description測試類
* @date Dec 7, 2021
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
// TODO 向Leader發送指令獲取課程數
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}
- 輸出:
在線課程的數量是:20
- 類圖如下:
- 上述
Boss
給Leader
下達獲取課程數指令代碼中根據迪米特法則可以看出,Course
與Boss
並不屬於朋友,Boss
給Leader
下指令就可以,並不需要關心Course
類
迪米特法則實現
Boss.java
/**
* @Description Boss
* @date Dec 7, 2021
* @version 1.0
*/
public class Boss {
/**
* 課程數量指令
* @param teamLeader
*/
public void commandCheckNumber(TeamLeader teamLeader) {
teamLeader.checkNumberOfCourses();
}
}
TeamLeader.java
/**
* @Description 項目經理
* @date Dec 7, 2021
* @version 1.0
*/
public class TeamLeader {
/**
* 課程數量
* @param courseList
*/
public void checkNumberOfCourses() {
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
System.out.println("在線課程的數量是:" + courseList.size());
}
}
- 類圖變化如下:
源碼
GitHub
:https://github.com/Maggieq8324/design_pattern.git