티스토리 뷰
디미터의 법칙(Law of Demeter)
상태를 가지는 객체의 데이터를 꺼내려 하지 말고 메세지를 보내라.
- 객체의 자료를 숨기고 함수를 공개함.
- 코드의 중복 사용 방지와 유지 보수성을 높일 수 있다.
- 결합도를 낮추고 응집도를 높일 수 있다.
디미터의 법칙을 위반한 경우
public class Lotto {
private List<Integer> LottoNumbers;
public Lotto(List<Integer> lottoNumbers) {
LottoNumbers = lottoNumbers;
}
public List<Integer> getLottoNumbers() {
return LottoNumbers;
}
}
@Test
void 디미터의_법칙_위반() {
List<Integer> lottoNumbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
Lotto lotto = new Lotto(lottoNumbers);
if(6 == lotto.getLottoNumbers().get(5)){
// some code
}
}
디미터의 법칙을 준수한 경우
public class Lotto {
private List<Integer> LottoNumbers;
public Lotto(List<Integer> lottoNumbers) {
LottoNumbers = lottoNumbers;
}
public boolean contains(int lottoNumber) {
return LottoNumbers.contains(lottoNumber);
}
}
@Test
void 디미터의_법칙_준수() {
List<Integer> lottoNumbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
Lotto lotto = new Lotto(lottoNumbers);
if(lotto.contains(6)){
// some code
}
}
'Design Pattern' 카테고리의 다른 글
우아한테크캠프 Pro 5기 - 정적 팩토리 메서드와 인스턴스 캐싱 (0) | 2022.11.11 |
---|---|
우아한테크캠프 Pro 5기 프리코스 - 일급 컬렉션(First Class Collection)과 원시값, 문자열 포장 (0) | 2022.10.12 |
퍼사드 패턴 (0) | 2021.03.13 |
댓글