軟件設計七大原則:(五)迪米特原則

一、迪米特原則簡介

  • 定義:一個對象應該對其他對象保持最少的瞭解。又叫最少知道原則。
  • 儘量降低類與類之間的耦合
  • 優點:降低類之前的耦合
  • 強調只和朋友交流,不和陌生人說話
  • 什麼是朋友類?
    朋友類指的是出現在成員變量、方法的輸入、輸出參數中的類稱爲成員朋友類,而出現在方法體內部的類不屬於朋友類。

二、代碼實現

1.違背迪米特原則的反例

public class 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) {
        List<Course> courseList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        teamLeader.checkNumberOfCourses(courseList);
        System.out.println("在線課程的數量是:"+courseList.size());
    }
}
public class DemeterTest {
    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }
}

2.遵循迪米特原則的正確示範

public class Course {
}
public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader) {
        teamLeader.checkNumberOfCourses();
    }
}
public class TeamLeader {
    public void checkNumberOfCourses() {
        List<Course> courseList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        System.out.println("在線課程的數量是:"+courseList.size());
    }
}
public class DemeterTest {
    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }
}

三、關於迪米特原則的理解

/**
* 理解起來也比較簡單,最重要的是要分清楚哪些類是直接的朋友,
* 哪些類不是朋友。
* 以上面代碼爲例,Boss不需要關心Course的內容,
* 它只需要給TeamLeader指令,然後得到指定結果即可。
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章