1.1.4 Observer Pattern
1.1.4 옵저버 패턴
옵저버 패턴(Observer Pattern)은 객체의 상태 변화를 관찰하는 옵저버들에게 자동으로 통지하도록 하는 디자인 패턴입니다. 주제(Subject) 객체의 상태가 변경되면, 그와 연결된 모든 옵저버(Observer)들에게 알림이 전달되어 각 옵저버가 변화에 대응할 수 있게 합니다. 이 패턴은 주로 이벤트 핸들링 시스템, 모델-뷰-컨트롤러(MVC) 아키텍처 등에서 많이 사용됩니다.
옵저버 패턴의 특징
느슨한 결합: 주제와 옵저버 간의 결합도를 낮춰, 시스템의 유연성과 확장성을 높입니다.
자동 업데이트: 주제의 상태가 변경되면 옵저버들에게 자동으로 통지되어 상태를 동기화합니다.
일대다 관계: 하나의 주제 객체가 여러 옵저버 객체들에게 변경 사항을 통지할 수 있습니다.
옵저버 패턴 구현 예제 (Java)
다음은 Java에서 옵저버 패턴을 구현한 예제입니다:
위 예제에서는 Subject
인터페이스와 Observer
인터페이스를 정의하고, 이를 구현한 Topic
클래스와 TopicSubscriber
클래스를 통해 옵저버 패턴을 구현합니다. Topic
클래스는 메시지를 게시하고, 등록된 옵저버들에게 변경 사항을 통지합니다. TopicSubscriber
클래스는 Observer
인터페이스를 구현하여 주제로부터 메시지를 받아 처리합니다.
옵저버 패턴의 장점과 단점
장점:
느슨한 결합: 주제와 옵저버 간의 결합도를 낮춰, 시스템의 유연성과 확장성을 높입니다.
재사용성: 옵저버 패턴을 사용하면 주제와 옵저버 객체를 독립적으로 재사용할 수 있습니다.
동적 추가/삭제: 런타임에 옵저버를 동적으로 추가하거나 제거할 수 있습니다.
단점:
성능 저하: 옵저버가 많을 경우, 주제 객체의 상태 변경 시 모든 옵저버에게 통지하는 과정에서 성능 저하가 발생할 수 있습니다.
복잡성 증가: 주제와 옵저버 간의 상호 작용이 많아질수록 코드의 복잡성이 증가할 수 있습니다.
예상치 못한 업데이트: 옵저버가 주제의 상태 변경에 대해 예측하지 못한 업데이트를 받을 수 있습니다.
옵저버 패턴은 이벤트 기반 시스템에서 주로 사용되며, 객체 간의 느슨한 결합을 유지하면서도 효과적으로 상태 변화를 통지할 수 있는 유용한 패턴입니다. 이를 통해 시스템의 유연성과 확장성을 높일 수 있으며, 코드의 재사용성을 극대화할 수 있습니다.
Last updated