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