1.迪米特原则介绍
2.用代码演示里迪米特原则
3.总结
1.迪米特原则介绍
定义:
1)一个对象应该对其他对象保持最少的了解。
换句话来说,迪米特原则的特点就是:和直接朋友通信。
直接朋友:每个对象都会和其它对象有耦合关系,只要有耦合关系,我们就说这两个对象之间是朋友关系。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。
问题描述:假设我们有一个学生管理系统,教师要去查询他的所有学生的成绩列表。 这是就需要两个操作:
1)先去查所有学生
2)再去查学生对应的成绩
此时查成绩这个操作应该放在学生列表里面查询直接返回,而不是教师的service先查学生,再去查分数,因为分数不是教师service的直接朋友。
解决方法:
把查询分数放在学生service里进行
2.用代码演示迪米特原则
修改前,我们在TeacherService里查询学生和分数:
public List<StudengScope> queryScope(){
List<Student> students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
List<StudengScope> res = scoperService.queryScopeByStudents(students);
return res;
}
修改后,我们在TeacherService里查询学生,在StudentService里查询分数:
public List<StudengScope> queryScope(){
List<StudengScope> students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
return students;
}
public List<StudengScope> queryStudentByTeacher(){
List<Student> students = studentService.queryStudentByTeacher(UserUtil.getCurrent().getId());
List<StudengScope> res = this.queryScopeByStudents(students);
return res;
}
3.总结
迪米特法则是为了降低类之间的耦合而设计的,由于每个类都减少了依赖,所以确实可以降低耦合关系。但是凡事有度,虽然减少了直接联系,但是却拥有间接联系,使用这个法则会产生大量的间接关系,所以使用这个原则的时候,要反复权衡,做到结构清晰,又要高内聚低耦合。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。