首页 > 其他 > 详细

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

时间:2020-09-20 20:53:30      阅读:79      评论:0      收藏:0      [点我收藏+]

迪米特原则定义

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

  • 尽量降低类与类之间的耦合
  • 尽量多使用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);
  }

类图

技术分享图片

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!