课程名称:Java设计模式精讲 Debug方式+内存分析
课程章节:第3章 软件设计七大原则
主讲老师:Geely
课程内容:
迪米特原则:最少知道原则:
问题1)定义?
一个对象应该对其他对象保持最少的了解。
问题2)作用和优点:
降低类之间的耦合。
问题3)具体体现:强调只和朋友交流,不和陌生人说话?哪些是朋友?哪写不上朋友?
朋友:出现在成员变量,方法的输入,输出参数中的类称为朋友类。
而出现在方法体内部的类不属于朋友类。
也就是说,不要在方法中引入非朋友类和对象。
注意:可以使用依赖注入,引入任意的成员变量,但是迪米特法则是要根据业务调用链,确定哪些是需要引入的成员变量。哪些是不能直接引入的,这个需要根据业务进行确认。
问题4)boss 让teamLeader报告一下网站上一共有多少个课程。
版本一:Course不是Boss类的朋友,因为它在方法的内部。本来该TeamLeader类和Course类是朋友的,现在变成了Boss类和Course类是朋友。
/**
- 业务:
- boss 让teamLeader报告一下网站上一共有多少个课程。
*/
public class Boss {
public void CommandCheckCourse(TeamLeader teamLeader){
List courseList = new ArrayList();
for(int i = 0; i<20; i++){
courseList.add(new Course());
}
teamLeader.checkNumberOfCourse(courseList);
}
}
public class Course {
}
public class TeamLeader {
public void checkNumberOfCourse(List course){
System.out.println(“课程总数为”+course.size());
}
}
版本二:TeamLeader类和Course类是朋友。符合迪米特法则,最少知道原则。
/**
- 业务:
- boss 让teamLeader报告一下网站上一共有多少个课程。
*/
public class Boss {
public void CommandCheckCourse(){
TeamLeader teamLeader = new TeamLeader();
teamLeader.checkNumberOfCourse();
}
}
public class Course {
}
public class TeamLeader {
public void checkNumberOfCourse(){
Course course = new Course();
List courseList = new ArrayList();
for(int i = 0; i<20; i++){
courseList.add(new Course());
}
System.out.println(“课程总数为”+courseList.size());
}
}