設(shè)計(jì)模式七大原則 - 迪米特法則(最少知道原則)

迪米特法則 (最少知道原則)

  1. 迪米特法則又叫最少知道原則,即一個(gè)類對(duì)自己依賴的類知道的越少越好。不管被依賴的類有多么的復(fù)雜,都盡量將邏輯封裝在類的內(nèi)部。除了提供 public 方法以外,不對(duì)外泄露其他信息

  2. 迪米特法則只與直接的朋友進(jìn)行通信

    直接朋友:

    1. 成員變量
    2. 方法參數(shù)
    3. 方法返回值

案例

案例需求描述:現(xiàn)在有一個(gè)老板、一個(gè)領(lǐng)導(dǎo)、十個(gè)員工。老板需要十個(gè)員工每天喊 “老板好”

public class Boss {
    public void notice() {
        Leader leader = new Leader();   // 應(yīng)當(dāng)將 Leader 提升為成員變量
        List<Employee> employees = leader.getEmployees();   // 這里老板直接使用了員工類,員工是老板的下下級(jí),應(yīng)該由 Leader 來通知
        employees.forEach(employee -> employee.say("老板好"));
    }
}

public class Leader {
    public List<Employee> getEmployees() {
        List<Employee> employees = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Employee employee = new Employee();
            employee.setId(i + 1);
            employees.add(employee);
        }
        return employees;
    }
}

public class Employee {
    private int id;

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void say(String str) {
        System.out.println("員工" + this.id + "說: " + str);
    }
}

public class Main {

    public static void main(String[] args) {
        Boss boss = new Boss();
        boss.notice();
    }
}

現(xiàn)在我們針對(duì)這個(gè)案例使用迪米特法則進(jìn)行優(yōu)化

優(yōu)化思路:老板不需要知道每個(gè)員工信息,他也不需要單獨(dú)對(duì)每個(gè)員工進(jìn)行對(duì)話,他只需要吩咐給經(jīng)理就行了。由經(jīng)理做事情

public class Boss {
    private final Leader leader = new Leader();

    public void notice() {
        leader.notice("老板好");
    }

}

public class Leader {
    public List<Employee> getEmployees() {
        List<Employee> employees = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            Employee employee = new Employee();
            employee.setId(i + 1);
            employees.add(employee);
        }
        return employees;
    }

    public void notice(String str) {
        this.getEmployees().forEach(employee -> employee.say("老板好"));
    }
}

Main 和 Employee 類不需要進(jìn)行修改

通過迪米特法則優(yōu)化后可以看出 Boss 與員工沒有了直接的接觸了

ps: 我對(duì)迪米特法則的理解就是,依賴應(yīng)該有層次,一級(jí)只能依賴一級(jí),不能跨級(jí)依賴。換個(gè)比方就是,老板不需要知道每個(gè)員工做什么,只需要管理他的下一級(jí)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容