例子
假设老板给项目组长下达一个任务,让其去查询课程的数量
代码
public class Course {
}
public class TeamLeader {
public void checkNumberOfCourses(List<Course> courseList) {
System.out.println("课程的数量为:" + courseList.size());
}
}
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader) {
List<Course> courseList = new ArrayList<Course>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
teamLeader.checkNumberOfCourses(courseList);
}
}
测试
public class Test {
public static void main(String[] args) {
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}
这部分代码是不符合迪米特原则的,在Boss
类中,成员变量,方法的返回值,形参均为“朋友”,而方法内部的局部变量不是朋友,迪米特原则就是强调只和朋友说话,不和陌生人说话,在上述代码中Boss
应该只需要项目组长TeamLeader
汇报给他一个结果就行了,中间有关于Course
的部分不需要知道,修改之后的代码如下:
其他类均不变,只改变Boss
类和TeamLeader
类
public class TeamLeader {
public void checkNumberOfCourses() {
List<Course> courseList = new ArrayList<Course>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
System.out.println("课程的数量为:" + courseList.size());
}
}
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader) {
teamLeader.checkNumberOfCourses();
}
}