나는 여기에있는 모든 대답이 구체적인 예를 제시하지 않고 관찰자와 펍 / 서브 패턴의 미묘한 차이점을 설명하려고 노력하고 있음을 약간 즐겁게 생각합니다. 나는 대부분의 독자들이 여전히 하나는 동기식이고 다른 하나는 비동기식으로 읽음으로써 각각을 구현하는 방법을 모른다고 확신합니다.
한 가지주의해야 할 점은 이 패턴의 목표는 코드를 분리하는 것입니다.
옵저버는 객체 (주체라고 함)가 객체 (관찰자)에 따라 객체 목록을 유지하고 상태 변경 사항을 자동으로 알려주는 디자인 패턴입니다.
관찰자 패턴
이것은 observable object
모든 것을 유지하는 목록 이 있음을 의미합니다.observers
(보통 기능인) . 이 목록을 탐색하고 좋은 시간이되면이 함수를 호출 할 수 있습니다.
이 관찰자 패턴을 참조하십시오 예제를 참조하십시오.
이 패턴은 오브젝트에서 데이터 변경 사항을 청취하고 다른 UI보기를 적절하게 업데이트하려는 경우에 좋습니다.
그러나 Cons are Observables 는 관찰자를 유지하기 위해 하나의 배열 만 유지
합니다 (예에서 배열은observersList
).
업데이트가 하나만 있기 때문에 업데이트가 트리거되는 방식을 구별하지 않으며 notify function
, 해당 배열에 저장된 모든 기능을 트리거합니다.
다른 이벤트를 기반으로 옵저버 핸들러를 그룹화하려는 경우. 우리는 그것을 좋아 observersList
하는 것으로 수정해야 합니다.Object
var events = {
"event1": [handler1, handler2],
"event2": [handler3]
}
자세한 내용은 이 pubsub 예 를 참조하십시오.
사람들은이 변형을이라고 pub/sub
합니다. 따라서 events
게시 한 내용 에 따라 다른 기능을 트리거 할 수 있습니다 .