一个对象应该对其他对象保持最少的了解。又叫最少知道原则
老板(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