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