美文网首页
设计模式七大原则 - 迪米特法则(最少知道原则)

设计模式七大原则 - 迪米特法则(最少知道原则)

作者: 夹板儿孩 | 来源:发表于2022-11-27 18:17 被阅读0次

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

  1. 迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。不管被依赖的类有多么的复杂,都尽量将逻辑封装在类的内部。除了提供 public 方法以外,不对外泄露其他信息

  2. 迪米特法则只与直接的朋友进行通信

    直接朋友:

    1. 成员变量
    2. 方法参数
    3. 方法返回值

案例

案例需求描述:现在有一个老板、一个领导、十个员工。老板需要十个员工每天喊 “老板好”

public class Boss {
    public void notice() {
        Leader leader = new Leader();   // 应当将 Leader 提升为成员变量
        List<Employee> employees = leader.getEmployees();   // 这里老板直接使用了员工类,员工是老板的下下级,应该由 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();
    }
}

现在我们针对这个案例使用迪米特法则进行优化

优化思路:老板不需要知道每个员工信息,他也不需要单独对每个员工进行对话,他只需要吩咐给经理就行了。由经理做事情

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 类不需要进行修改

通过迪米特法则优化后可以看出 Boss 与员工没有了直接的接触了

ps: 我对迪米特法则的理解就是,依赖应该有层次,一级只能依赖一级,不能跨级依赖。换个比方就是,老板不需要知道每个员工做什么,只需要管理他的下一级

相关文章

  • 面向对象中七个的设计原则

    七大设计原则: 开闭原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则最少知识原则(迪米特法则)少用继承多用组合...

  • [Code Design] 六大设计原则之`迪米特法则`

    六大设计原则之迪米特法则 定义 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Know...

  • 设计模式笔记 七大原则

    七大原则 1、开闭原则 2、依赖倒置原则 3、单一职责原则 4、接口隔离原则 5、迪米特法则(最少知道原则) 6、...

  • 02 Android常见设计模式:面向对象的设计原则

    一. 类的设计原则 开闭原则里氏替换原则迪米特法则(最少知道原则)单一职责原则接口隔离原则依赖倒置原则 这几个设计...

  • 设计模式原则

    设计模式的六大原则 1、迪米特法则(最少知道原则)(Demeter Principle)如果两个软件实体无须直接通...

  • 迪米特法则

    迪米特法则 迪米特法则定义 迪米特法则(Law Of Demeter, LoD) 也成为最少知识原则(Least ...

  • 软件设计7大原则

    软件设计7大原则 开闭原则 依赖倒置原则 单一职责原则 接口隔离原则 迪米特法则(最少知道原则) 里氏替换原则 合...

  • 设计模式七大原则 - 迪米特法则(最少知道原则)

    迪米特法则 (最少知道原则) 迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。不管被依赖的类有多...

  • 1.设计原则

    设计模式(面向对象)有七大原则,分别是: 开放-封闭原则 单一职责原则 依赖倒转原则 迪米特法则(也称为最小知识原...

  • 迪米特法则

    迪米特法则 迪米特法则的定义 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least K...

网友评论

      本文标题:设计模式七大原则 - 迪米特法则(最少知道原则)

      本文链接:https://www.haomeiwen.com/subject/zomcfdtx.html