概念
- 定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则
- 核心观念:类之间的解耦,尽量降低类与类之间的耦合
- 优点:降低类之间的耦合
- 强调:只和朋友(出现在成员变量、方法的输入、输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类)交流,不和陌生人说话
编码
实例
Boss
给Leader
下达获取课程数的指令Boss.java
/**
* @Description Boss
* @date Dec 7, 2021
* @version 1.0
*/
public class Boss {
/**
* 课程数量指令
* @param teamLeader
*/
public void commandCheckNumber(TeamLeader teamLeader) {
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
teamLeader.checkNumberOfCourses(courseList);
}
}
TeamLeader.java
/**
* @Description 项目经理
* @date Dec 7, 2021
* @version 1.0
*/
public class TeamLeader {
/**
* 课程数量
* @param courseList
*/
public void checkNumberOfCourses(List<Course> courseList) {
System.out.println("在线课程的数量是:" + courseList.size());
}
}
Course.java
/**
* @Description 课程
* @date Dec 7, 2021
* @version 1.0
*/
public class Course {
}
Test.java
/**
* @Description测试类
* @date Dec 7, 2021
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
// TODO 向Leader发送指令获取课程数
Boss boss = new Boss();
TeamLeader teamLeader = new TeamLeader();
boss.commandCheckNumber(teamLeader);
}
}
- 输出:
在线课程的数量是:20
- 类图如下:
- 上述
Boss
给Leader
下达获取课程数指令代码中根据迪米特法则可以看出,Course
与Boss
并不属于朋友,Boss
给Leader
下指令就可以,并不需要关心Course
类
迪米特法则实现
Boss.java
/**
* @Description Boss
* @date Dec 7, 2021
* @version 1.0
*/
public class Boss {
/**
* 课程数量指令
* @param teamLeader
*/
public void commandCheckNumber(TeamLeader teamLeader) {
teamLeader.checkNumberOfCourses();
}
}
TeamLeader.java
/**
* @Description 项目经理
* @date Dec 7, 2021
* @version 1.0
*/
public class TeamLeader {
/**
* 课程数量
* @param courseList
*/
public void checkNumberOfCourses() {
List<Course> courseList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
courseList.add(new Course());
}
System.out.println("在线课程的数量是:" + courseList.size());
}
}
- 类图变化如下:
源码
GitHub
:https://github.com/Maggieq8324/design_pattern.git