프로그래밍/프로그래밍 이론

옵저버(Observer) 패턴

argentdarae 2025. 3. 21. 01:42
반응형

옵저버 패턴이란?

객체간 1:N 관계를 정의하며, 한 객체의 상태 변화가 다른 객체들에게 자동으로 전달되도록 하는 디자인 패턴이다

 

즉, 주체(Subject) 객체가 상태를 변경하면 구독자(Observer)들이 감지하고 반응하는 것이다

 

옵저버 패턴의 구성 요소

Subject (주체, 관찰 대상)

  • 상태 변화를 감지해야 하는 객체
  • 옵저버(Observer) 목록을 관리하며, 상태가 변경되면 모든 옵저버에게 알림을 보낸다

Observer (옵저버, 구독자)

  • Subject의 상태 변화를 감지하고, 이에 반응하는 객체
  • Subject가 변경될 때 알림을 받아 필요한 작업을 수행한다

 

예시 동작 흐름

  1. Observer가 Subject를 구독(Subscribe) 한다
  2. Subject의 상태가 변경되면 모든 Observer에게 자동으로 알림이 전송된다
  3. Observer들은 알림을 받고 자신의 상태를 업데이트 한다

 

옵저버 패턴의 장점

  • 객체 간 결합도 감소: Subject와 Observer가 직접 연결되지 않아 유연한 설계가 가능
  • 유지보수 편리: 새로운 Observer를 추가해도 Subject의 코드 변경이 필요 없다

 

옵저버 패턴 사용시 주의할 점

  • 옵저버 개수 증가시 이슈 발생 가능: 많은 옵저버에게 알림을 보내야 하므로 성능 문제 및 디버깅 복잡성이 증가할 수 있다
  • 순환 참조 위험: Subject와 Observer가 서로 참조하는 경우 널 레퍼런스 발생 가능하다

 


Reference

Observer pattern - Wikipedia