옵저버 패턴(observer pattern)
옵서버 패턴은 객체 사이에 일대다의 의존성을 정의
어떤 객체의 상태가 변할 때 그 객체에 의존하는 다른 객체들이 자동으로 알림을 받는 패턴
주요 구성 요소:
- 주체(Subject) 또는 서브젝트
상태 변화를 주시하고 있는 대상 객체로, 상태의 변경이 일어나면 등록된 옵저버들에게 알림을 보냅니다.
- 옵저버(Observer)
주체의 상태 변화를 감지하고 대응하는 객체입니다.
주체에 등록되어 있어야 하며, 주체에서 알림이 오면 자동으로 업데이트 메소드를 호출하여 상태 변화에 대응합니다.
- 구체적인 주체 및 옵저버
인터페이스나 추상 클래스를 통해 주체와 옵저버의 일반적인 동작을 정의한 후, 구체적인 클래스에서 실제 동작을 구현합니다.
동작 과정
- 주체 상태 변경
주체의 상태가 변경되면 등록된 모든 옵저버들에게 알림을 보냅니다.
- 옵저버 업데이트
옵저버들은 알림을 받으면 자동으로 업데이트 메소드를 호출하여 주체의 상태 변화에 대응합니다.
장점
- 느슨한 결합(Loose Coupling)
주체와 옵저버 간에는 최소한의 의존성이 존재하며, 서로 독립적으로 확장 가능합니다.
- 유연성(Flexibility)
새로운 옵저버를 추가하거나 기존 옵저버를 제거하는 것이 간단하며, 주체의 변경이 옵저버에 영향을 미치지 않습니다.
- 이벤트 기반 프로그래밍
이벤트 발생 시 옵저버들에게 통지하는 기본적인 메커니즘을 제공합니다.
옵저버 패턴은 주로 이벤트 핸들링이나 MVC(Model-View-Controller) 아키텍처에서 활발하게 사용됩니다.
참고
면접을 위한 cs 전공지식 노트