패스잇
CS 기초 · 기초

옵저버(Observer) 패턴은 객체 간의 일대다 의존성을 어떻게 관리하며, 주로 어떤 시스템에서 효과적으로 사용될 수 있나요?

힌트 · 주체(Subject)의 상태 변화를 관찰자(Observer)들에게 자동으로 알리는 방식으로, 느슨한 결합을 통해 상태 변화에 따른 업데이트를 효율적으로 처리합니다. UI 이벤트, 분산 시스템 알림 등에 활용됩니다.

일대다 의존성주체(Subject)관찰자(Observer)상태 변화이벤트 기반 시스템

모범답안

옵저버 패턴은 주체(Subject) 객체의 상태 변화를 여러 관찰자(Observer) 객체들에게 자동으로 알리는 방식으로 일대다 의존성을 관리합니다. 주체는 관찰자 목록을 유지하며, 상태가 변경될 때마다 등록된 모든 관찰자에게 이를 통지합니다. 관찰자들은 이 통지를 받아 자신의 상태를 업데이트하거나 필요한 작업을 수행합니다.

이 패턴은 주체와 관찰자 간의 느슨한 결합을 제공하여, 주체의 변경이 관찰자들에게 직접적인 영향을 주지 않으면서도 상태 변화에 효율적으로 대응할 수 있게 합니다.

주로 이벤트 기반 시스템에서 효과적으로 사용됩니다. 예를 들어, 사용자 인터페이스(UI)에서 버튼 클릭이나 데이터 변경과 같은 이벤트가 발생했을 때, 해당 이벤트를 구독하는 여러 컴포넌트들에게 알림을 보내 업데이트하는 경우에 유용합니다. 또한, 분산 시스템에서 특정 서비스의 상태 변화를 여러 다른 서비스에 알리거나, 실시간 데이터 스트림을 처리하는 시스템 등에서도 널리 활용됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 디자인 패턴 면접 질문

← 디자인 패턴 면접 질문 전체 보기