#3BehavioralEasy

Observer Pattern (EventEmitter)

Observer Pattern

EventEmitter 클래스를 구현하세요. 이벤트 이름으로 핸들러를 구독/해제하고, 발행 시 등록된 모든 구독자에게 인자를 전달합니다.

API

  • on(event: string, fn: (...args: any[]) => void): void
  • off(event: string, fn: (...args: any[]) => void): void
  • emit(event: string, ...args: any[]): void

동작 예시

const bus = new EventEmitter();
const handler = (msg) => console.log(msg);
bus.on('say', handler);
bus.emit('say', 'hi');     // 'hi' 출력
bus.off('say', handler);
bus.emit('say', 'no one'); // 출력 없음

학습 포인트

  • 발행자(subject)와 구독자(observer) 분리
  • 같은 이벤트에 다수 구독자가 가능해야 함
  • off는 정확히 그 함수 참조만 제거 (다른 핸들러는 유지)
언어: