迪米特原则
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