• 관심있는 객체의 상태 변화를 관찰하고,
    객체의 상태변화가 발생할 때 마다 알림을 받는 패턴을 뜻한다.

✏️ 옵저버 패턴의 구조

📍 Subscriber - 구독자

  • 객체의 상태가 변화할 경우 알림을 받는 쪽을 뜻한다.
  • subscribe() 을 통해 특정 객체의 변화를 감지하기 시작한다.
  • unsubscribe() 을 통해 객체의 변화 감지를 종료한다.

📍 Publisher - 공급자

  • 변화가 발생되는 객체를 뜻한다.
  • subscribe() 을 한 구독자에 한에 객체의 변화가 발생될 때
    notifySubscribers(eventType) 으로 변화에 대한 알림을 보낸다.

						----    subscribe  --->
Subscriber  <- notifySubscribers --  Publisher
            ----  unsubscribe  --->

✏️ 옵저버 패턴의 작동방식

  • 구독자가 구독을 할 경우 공급자는 내부적으로 관리하는 subscribers 배열에 구독자를 추가한다.
  • 공급자 객체가 변화하면 notifySubscribers 를 호출해 배열에 있는 구독자 들에게 상태변화를 알린다.
    • 이 때 어떤 상태가 변화되었는지에 대한 eventType 을 인자로 함께 보낸다.
  • 구독자는 개별적으로 핸들러를 구현해 eventType 에 맞게 새로운 작업을 수행하게 된다.

📍 객체지향적 설계

  • 공급자는 객체의 변화에 따른 eventType 만 전송하고 그 처리는 구독자의 handler 에서 이루어 진다.
    • 즉, 새로운 구독이 발생되더라도 공급자는 그것을 알 필요도, 코드를 변경할 필요도 없다.
profile
잘못된 내용 PR 환영

0개의 댓글