옵저버 패턴은 객체의 상태 변화를 관찰하는 관찬자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.
아주 간단한 얘기를 해보자면 어떤 객체의 상태가 변할 때 그와 연관된 객체 들에게 알림을 보내느 디자인 패턴이 옵저버 패턴이라고 할 수 있다.
옵저버 패턴에는 주체 객체와 상태 변경을 알아야하는 관찰 객체가 존재하며 이들의 관계는 1:1이 될수도 있고 1:N이 될 수도 있습니다.
- 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다.
- 느슨한 결합으로 시스템이 유연하고 객체간의 의존성을 제거할 수 있다.
- 너무 많이 사용하게 되면, 상태 관리가 힘들 수 있다.
- 데이터 배분에 문제가 생기면 자칫 큰 문제로 이어질 수 있다.