设计模式6大原则之【迪米特原则】

时间:2020-09-20
本文章向大家介绍设计模式6大原则之【迪米特原则】,主要包括设计模式6大原则之【迪米特原则】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

迪米特原则定义

一个对象应该对其他对象保持最少的了解。又叫最少知道原则

  • 尽量降低类与类之间的耦合
  • 尽量多使用private,少用public方法

迪米特原则优点

  • 降低类与类之间的耦合,提高了模块的相对独立性
  • 由于亲合度降低,从而提高了类的可复用率和系统的扩展性

迪米特原则实现

一个反例

老板(Boss)想让经理(Manager)查询一下单位的员工(Employee)数量有多少
针对这个需求,有以下代码:
员工类:

public class Employee {
}

经理类:

public class Manager {
    public int getEmployeeCount(List<Employee> employeeList){
        return employeeList.size();
    }
}

老板类:

public class Boss {
    public int getEmployeeCount(Manager manager){
        List<Employee> employeeList = new ArrayList<Employee>();
        //假设这里是在数据库查询的
        for (int i = 0; i < 10; i++) {
            employeeList.add(new Employee());
        }
       return manager.getEmployeeCount(employeeList);
    }
}

测试类:

public static void main(String[] args) {
        Boss boss = new Boss();
        Manager manager=new Manager();
        int count=   boss.getEmployeeCount(manager);
       System.out.println("员工数量是:"+count);
    }

运行上述测试,返回10没有问题

类图

我们发现,测试的类依赖了老板和经理类,老板类又依赖了员工类,但其实我们知道老板是不需要依赖员工的,测试也可以不依赖经理类的,以上做法类与类之间的依赖看起来很混乱

最佳实现

我们重新调整依赖关系
经理类:

public class Manager {
    public int getEmployeeCount(){
        List<Employee> employeeList = new ArrayList<Employee>();
        //假设这里是在数据库查询的
        for (int i = 0; i < 10; i++) {
            employeeList.add(new Employee());
        }
        return employeeList.size();
    }
}

老板类:

public class Boss {
    public int getEmployeeCount(){
        Manager manager = new Manager();
       return manager.getEmployeeCount();
    }
}

测试类:

public static void main(String[] args) {
       Boss boss = new Boss();
      int count=   boss.getEmployeeCount();
     System.out.println("员工数量是:"+count);
  }

类图

修改后我们发现,类与类之间的耦合降低了,实现看起来也更加清晰。

原文地址:https://www.cnblogs.com/xiaoqingtian/p/13701114.html