CS 기초 · 기초
옵저버(Observer) 패턴은 객체 간의 일대다 의존성을 어떻게 관리하며, 주로 어떤 시스템에서 효과적으로 사용될 수 있나요?
힌트 · 주체(Subject)의 상태 변화를 관찰자(Observer)들에게 자동으로 알리는 방식으로, 느슨한 결합을 통해 상태 변화에 따른 업데이트를 효율적으로 처리합니다. UI 이벤트, 분산 시스템 알림 등에 활용됩니다.
일대다 의존성주체(Subject)관찰자(Observer)상태 변화이벤트 기반 시스템
모범답안
옵저버 패턴은 주체(Subject) 객체의 상태 변화를 여러 관찰자(Observer) 객체들에게 자동으로 알리는 방식으로 일대다 의존성을 관리합니다. 주체는 관찰자 목록을 유지하며, 상태가 변경될 때마다 등록된 모든 관찰자에게 이를 통지합니다. 관찰자들은 이 통지를 받아 자신의 상태를 업데이트하거나 필요한 작업을 수행합니다.
이 패턴은 주체와 관찰자 간의 느슨한 결합을 제공하여, 주체의 변경이 관찰자들에게 직접적인 영향을 주지 않으면서도 상태 변화에 효율적으로 대응할 수 있게 합니다.
주로 이벤트 기반 시스템에서 효과적으로 사용됩니다. 예를 들어, 사용자 인터페이스(UI)에서 버튼 클릭이나 데이터 변경과 같은 이벤트가 발생했을 때, 해당 이벤트를 구독하는 여러 컴포넌트들에게 알림을 보내 업데이트하는 경우에 유용합니다. 또한, 분산 시스템에서 특정 서비스의 상태 변화를 여러 다른 서비스에 알리거나, 실시간 데이터 스트림을 처리하는 시스템 등에서도 널리 활용됩니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 디자인 패턴 면접 질문
- 추상 팩토리(Abstract Factory) 패턴은 팩토리 메서드 패턴과 어떻게 다르며, 어떤 종류의 문제를 해결하는 데 효과적인가요?
- 빌더(Builder) 패턴은 복잡한 객체를 생성할 때 어떤 이점을 제공하며, 일반적인 생성자(Constructor) 방식과 비교했을 때의 차이점은 무엇인가요?
- 스트래티지(Strategy) 패턴은 다양한 알고리즘을 유연하게 교체해야 할 때 어떻게 활용될 수 있는지 설명해주세요.
- 실무에서 Singleton 패턴을 사용할 때 발생할 수 있는 문제점(예: 테스트 용이성, 멀티스레딩 환경)과 이를 해결하기 위한 방법에 대해 설명해 주세요.
- Factory Method 패턴과 Abstract Factory 패턴은 모두 객체 생성을 추상화하지만, 목적과 적용 방식에 차이가 있습니다. 두 패턴의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 구체적인 예시를 들어 비교해 주세요.
- 시스템의 특정 동작 방식을 런타임에 유연하게 변경해야 하는 요구사항이 있을 때, Strategy 패턴을 어떻게 적용할 수 있는지 설명하고, 이 패턴이 가져다주는 장점과 단점을 함께 설명해 주세요.