设计原则 - 迪米特法则
目录
- End - 
- 个人学习笔记 - 
						  
					  
						
							
						
						
						
						
						
					- 概念
- 编码- 实例
- 迪米特法则实现
- 源码
 
概念
- 定义:一个对象应该对其他对象保持最少的了解,又叫最少知道原则
- 核心观念:类之间的解耦,尽量降低类与类之间的耦合
- 优点:降低类之间的耦合
- 强调:只和朋友(出现在成员变量、方法的输入、输出参数中的类成为成员朋友类,而出现在方法体内部的类不属于朋友类)交流,不和陌生人说话
编码
实例
- Boss给- Leader下达获取课程数的指令
- Boss.java
/**
 * @Description Boss
 * @date Dec 7, 2021
 * @version 1.0
 */
public class Boss {
    /**
     * 课程数量指令
     * @param teamLeader
     */
    public void commandCheckNumber(TeamLeader teamLeader) {
        List 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 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 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