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.总结

迪米特法令是为了升高类之间的耦合而设计的,因为每个类都缩小了依赖,所以的确能够升高耦合关系。然而凡事有度,尽管缩小了间接分割,然而却领有间接分割,应用这个法令会产生大量的间接关系,所以应用这个准则的时候,要重复衡量,做到构造清晰,又要高内聚低耦合。