간단하게 한줄에 . 하나만 찍는다고 표현한다.
핵심
객체의 구조를 따라 멀리 떨어져있는 객체를 get 을 통해 불러오거나, 메세지를 보내지마라
객체 내부에 있는 내용, 메세지를 통해 얻은 정보만 사용해야한다.
→ 객체가 알아야하는 다른 객체의 내용을 최소화 하라!
💁 Principle of least knowledge ( 최소 지식 원칙 )
EX)
public class Post {
private final List<Comment> comments;
public Post(List<Comment> comments) {
this.comments = comments;
}
public List<Comment> getComments() {
return comments;
}
}
public class Board {
private final List<Post> posts;
public Board(List<Posts> posts) {
this.posts = posts;
}
public void addComment(int postsId, String content) {
posts.get(postId).getComments().add(new Comment(content));
}
}
IF
public void addComment(int postId, String content) {
posts.get(postId).getComments().add(new Comment(content));
}
Class Demeter {
private Member member;
public myMethod(OtherObject other) {
}
public okLawOfDemeter(Paramemter param) {
myMethod(); // 1
param.paramMethod(); // 2
Local local = new local(); // 3
local.localMethod();
member.memberMethod(); // 4
}
}