迪米特原則
一個對象應該對其他對象保持最少的了解,又叫最少知道原則;
盡量降低類與類之間的耦合;
強調只和朋友交流,不和陌生人說話;
朋友:出現在成員變量、方法的輸入、輸出參數中的類稱為成員朋友類;出現在方法體內部的類不屬于朋友類;
違反迪米特原則示例類圖
違反迪米特原則.png
違反迪米特原則示例代碼
- Boss的朋友是TeamLeader,Course出現在方法體中,不是朋友;
- 不是朋友,那么Boss就不應該和Course有關系;
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader){
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
teamLeader.checkNumberOfCourses(courseList);
}
}
public class TeamLeader {
public void checkNumberOfCourses(List<Course> courseList){
System.out.println("在線課程的數量是:" + courseList.size());
}
}
public class Course {
}
public class Test {
public static void main(String[] args) {
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}
符合迪米特原則示例類圖
迪米特原則.png
符合迪米特原則示例代碼
- 由于Course不是Boss的朋友,所以Boss只跟朋友TeamLeader打交道;
- 由TeamLeader和Course打交道;
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader){
teamLeader.checkNumberOfCourses();
}
}
public class TeamLeader {
public void checkNumberOfCourses(){
List<Course> courseList = new ArrayList<Course>();
for(int i = 0 ;i < 20;i++){
courseList.add(new Course());
}
System.out.println("在線課程的數量是:"+courseList.size());
}
}
public class Course {
}
public class Test {
public static void main(String[] args) {
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}