迪米特原则
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
package top.fjy8018.designpattern.principle.demeter;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),
|
||||||
|
* 就是说一个对象应当对其他对象有尽可能少的了解
|
||||||
|
* 和朋友交流,不和陌生人说话
|
||||||
|
* 朋友指的是出现在类成员变量、方法参数、返回值的对象
|
||||||
|
*
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2018-09-22 17:02
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class Boss {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 此处朋友为{@link TeamLeader},{@link DCourse}不是类成员变量、方法参数、返回值的对象,所以不应该在类内引用
|
||||||
|
* 即当前类知道的应该尽可能少
|
||||||
|
*
|
||||||
|
* @param teamLeader
|
||||||
|
*/
|
||||||
|
public void commandCheckNumber(TeamLeader teamLeader) {
|
||||||
|
List courses = teamLeader.checkNumberOfCourses();
|
||||||
|
log.info("课程的数量是:{}", courses.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package top.fjy8018.designpattern.principle.demeter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2018-09-22 17:04
|
||||||
|
*/
|
||||||
|
public class DCourse {
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package top.fjy8018.designpattern.principle.demeter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author F嘉阳
|
||||||
|
* @date 2018-09-22 17:04
|
||||||
|
*/
|
||||||
|
public class TeamLeader {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link DCourse}作为方法返回值,属于“朋友”
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<DCourse> checkNumberOfCourses() {
|
||||||
|
List<DCourse> courseList = new ArrayList<DCourse>();
|
||||||
|
for (int i = 0; i < 20; i++) {
|
||||||
|
courseList.add(new DCourse());
|
||||||
|
}
|
||||||
|
return courseList;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package top.fjy8018.designpattern.principle.demeter;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class BossTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void commandCheckNumber() {
|
||||||
|
Boss boss = new Boss();
|
||||||
|
boss.commandCheckNumber(new TeamLeader());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user