迪米特原则

This commit is contained in:
2018-09-22 17:09:45 +08:00
parent 78f405dbb4
commit 1433dabd23
4 changed files with 75 additions and 0 deletions

View File

@@ -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());
}
}

View File

@@ -0,0 +1,8 @@
package top.fjy8018.designpattern.principle.demeter;
/**
* @author F嘉阳
* @date 2018-09-22 17:04
*/
public class DCourse {
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}