Observer Pattern : 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다.

장점 : 간단하게 Broadcast System을 구축할 수 있다.

Module간의 결합도를 낮춤으로써 재사용 가능한 Module을 구현하기 쉬워진다.




예약이 다 되서 표가 품절된 콘서트를 상상해보자.

표를 구할 수 없는 사람들(Waiter)은 취소되는 표가 생겼을 때 연락(callback)을 받고 싶을 것이다.

그리고 콘서트의 기획자(pubsub)는 취소되는 표가 생겼을 때 이를 빨리 되팔고 싶을 것이다.

이 상황을 코드로 풀어보면 아래와 같다.

출처 : http://addyosmani.com/resources/essentialjsdesignpatterns/book/#observerpatternjavascript