목차
개요
내용
요약
객체간에 1 : N 연관관계를 설정해서 한 객체가 상태를 바꿀 때, 연관된 모든 객체들에게 알리자
동기
클래스를 나누다보면 연관된 객체들간에 일관성을 지키기가 힘들어진다. 그렇다고 객체를 강하게 결합시키자니 재사용성이 떨어진다.. 이럴 때 옵저버 패턴을 사용할 수 있다.
이 패턴의 핵심 객체는 옵저버와 관찰 대상(subject) 객체이다. 관찰 대상 객체에서 상태 변화가 나타나면 옵저버 객체들의 메소드를 호출한다. 이러한 상호작용은 publish-subscribe로도 알려져있다.
구조
이야깃거리
언제 써야 할까?
- 자신의 상태가 변화했을 때 대상 객체가 누구냐와 관계없이 이를 알려줘야하는 객체가 있을 때
- 한 객체의 상태 변화가 다른 객체의 상태 변화로 이어져야하고 얼마나 많은 다른 객체가 있을지 알 수 없을 때
장단점
- (Pros) 추상화된 커플링
- (Cons) 예상치못한 업데이트
Case Study
Case 1. java.util.Observer
JDK에는 옵저버 패턴을 구현하기 위한 인터페이스인 Observer와 Observable을 제공한다.
출처
GoF Design Patterns
'Design Patterns' 카테고리의 다른 글
[Design Patterns] Strategy (0) | 2024.06.16 |
---|---|
[Design Patterns] State (0) | 2024.06.09 |
[Design Patterns] Memento (0) | 2024.06.06 |
[Design Patterns] Mediator (0) | 2024.05.13 |
[Design Patterns] Iterator (0) | 2024.04.21 |