😊
Pattern - Observer
October 16, 2022
요약
- 상태 변경을 실시간으로 알릴 수 있는 패턴
Observer 패턴이란
- subject (관찰 대상), observer (관찰자)가 존재
- 관찰대상의 상태가 변경 된 경우 관찰자의 메소드를 호출 함으로써 상태 변경을 알려주는 패턴
로직
- observer가 subject에 observer 리스트에 상태 변경 시 실행될 메소드를 등록한다 (observer 자체를 등록한 후 notify 시 해당 observer의 특정한 함수를 실행해도 된다)
- subject에서 상태가 변경된 후 observer 리스트에 등록된 모든 observer의 메소드를 호출해 상태 변경을 알린다
예시
function Subject() {
this.observers = []; // observer list
this.registerObserver = function (observerMethod) {
this.observers.push(observerMethod);
};
this.unregisterObserver = function (observerMethod) {
this.observers = this.observers.filter(
(registeredObserverMethod) => registeredObserverMethod !== observerMethod,
);
};
this.notifyObservers = function (data) {
this.observers.forEach((observer) => observer(data));
};
}
끝
- 옵저버 패턴을 응용한 패턴으로 pub/sub 패턴이 있는데 이 부분은 나중에 알아봐야겠다
😊