主要强调只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称之为成员朋友类, 而出现在方法体内部的类不属于朋友类。
Demo:
现在来设计一个权限系统,TeamLeader需要查看目前发布到线上的课程数量。这时候,TeamLeader 要找到员工 Employee 去进行统计,Employee 再把统计结果告诉 TeamLeader.
public class Course {
}
public class Employee {
public void checkCourseCount(List<Course> courses) {
System.out.println("目前的课程数量是: " + courses.size());
}
}
public class TeamLeader {
public void commandCheckNumber(Employee employee) {
List<Course> courses = new ArrayList<>();
courses.add(new Course());
employee.checkCourseCount(courses);
}
}
// 测试类
public class MainTest {
public static void main(String[] args) {
TeamLeader teamLeader = new TeamLeader();
teamLeader.commandCheckNumber(new Employee());
}
}
以上代码运行结果是正确的,但是真的正确吗?
老大叫一个员工去统计课程数量,结果老大本身与Course类无关啊。
修改:
public class Employee {
public void checkCourseCount() {
List<Course> courses = new ArrayList<>();
courses.add(new Course());
System.out.println("目前的课程数量是: " + courses.size());
}
}
public class TeamLeader {
public void commandCheckNumber(Employee employee) {
employee.checkCourseCount();
}
}
老大直接发个指令就能知道结果了...