定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则
尽量降低类与类之间的耦合
优点:降低类之间的耦合
强调只和朋友交流,不和陌生人说话
朋友:出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
示例
实现一个老板命令组长去查询课程数量的Demo
代码实现
- 创建Course类,只需要空的类
/**
* @author lijiayin
*/
public class Course {
}
- 创建TeamLeader类
import java.util.List;
/**
* @author lijiayin
*/
public class TeamLeader {
public void checkNumber(List<Course> courseList){
System.out.println("课程数量为:" + courseList.size());
}
}
- 创建Boss类
import java.util.ArrayList;
import java.util.List;
/**
* @author lijiayin
*/
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader){
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
teamLeader.checkNumber(courseList);
}
}
- 创建测试类
/**
* @author lijiayin
*/
public class Test {
public static void main(String[] args) {
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}
-
测试结果
测试结果.png -
UML图
UML.png -
存在问题
因为TeamLeader是Boss方法的入参,所以TeamLeader是Boss的朋友,而Course不是,因此不应该出现在Boss中。
改进Demo
代码实现
- 修改Boss类
/**
* @author lijiayin
*/
public class Boss {
public void commandCheckNumber(TeamLeader teamLeader){
teamLeader.checkNumber();
}
}
- 修改TeamLeader类
import java.util.ArrayList;
import java.util.List;
/**
* @author lijiayin
*/
public class TeamLeader {
public void checkNumber(){
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
System.out.println("课程数量为:" + courseList.size());
}
}
-
测试结果
测试结果.png -
UML图
UML.png
网友评论