디미터의 법칙
= 최소 지식의 원칙(principle of least knowledge)
= 클래스 간의 결합도를 줄이기 위한 원칙
더보기
해석본
1. 객체 O 자신의 메서드는 호출할 수 있다
2. 메서드 m의 매개 변수들의 메서드는 호출할 수 있다.
3. 메서드 m 안에서 생성/초기화 한 객체들의 메서드는 호출할 수 있다.
4. 호출을 위한 메서드 또는 속성으로서 같은 클래스 안에서 선언된 객체의 메서드는 호출할 수 있다.
5. 객체 O가 접근할 수 있고, 메서드 m의 스코프에 있는 전역 객체의 메서드는 호출할 수 있다.
Lombok의 @Data
1. @ToString, @EqualsAndHashCode, @Getter / @Setter and @RequiredArgsConstructor 를 한 번에 사용하는 강력한 어노테이션
2. 편하지만, 너무 많다.
3. @Setter
- 객체를 언제든지 변경할 수 있는 상태가 된다
- 객체의 안정성을 보장받기 힘들다
=> Builder 패턴을 사용하자.
4. @ToString
- 양방향 참조관계일 때, 한 쪽의 toString()을 호출하면 순환참조 문제
=> @ToString(exclude = "...")처럼 어노테이션을 이용해 제외하자
결론
Lombok의 @Data는 편하지만 너무 강력해서 객체 간 결합도를 높일 수 있다.
필요한 어노테이션을 골라 사용하자.
출처
'학습 > Java' 카테고리의 다른 글
[java] 템플릿 엔진 / SSR & CSR / JSP와 Mustache / 정적파일 (0) | 2020.02.10 |
---|---|
[java] 테스트를 도와주는 JUnit / assertJ / h2 (0) | 2020.02.09 |
[java] @Entity와 @Builder (0) | 2020.02.05 |
[java] war파일 import하여 코드 수정한 뒤, 다시 export하기 (0) | 2019.05.29 |
[java] 객체지향 프로그래밍의 4가지 특징 (0) | 2019.05.25 |
댓글