SOFTWARE DESIGN PATTERN

[SOFTWARE DESIGN PATTERN] 02 옵저버 패턴(Observer Pattern)

clm_bonny 2023. 11. 26. 19:57
728x90
반응형

옵저버 패턴(Observer Pattern)이란?

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다.

 

옵저버 패턴의 핵심 구성요소

1. 주체(Subject): 상태가 변하는 객체를 나타낸다. 이 객체는 옵저버들을 등록하고, 상태가 변경되었을 때 등록된 옵저버들에게 알림을 보낸다.

2. 옵저버(Observer): 주체의 상태 변화를 감지하고 이에 대응하는 동작을 수행하는 인터페이스를 정의한다. 일반적으로 update 메서드가 이 역할을 한다.

3. 구체적인 옵저버(Concrete Observer): 옵저버 인터페이스를 구현한 구체적인 클래스들로, 주체의 상태가 변경되었을 때 수행할 동작을 정의한다.

 

옵저버 패턴의 특징

1. 느슨한 결합 (Loose Coupling): 옵저버 패턴은 주체와 옵저버 간의 관계를 느슨하게 유지한다. 주체는 옵저버들을 몰라도 되며, 옵저버들은 주체의 구체적인 구현에 대해 알 필요가 없다. 이로써 시스템의 유연성이 향상된다.

2. 이벤트 기반 프로그래밍 지원: 옵저버 패턴은 이벤트 발생 시 알림을 통해 이벤트 기반 프로그래밍을 지원한다. 상태 변화가 발생하면 이벤트를 발생시키고, 옵저버들은 이벤트를 처리하여 필요한 동작을 수행한다.

3. 분산 이벤트 핸들링: 옵저버 패턴은 객체 간의 통신을 통해 상태 변화를 알리므로, 분산 시스템에서 이벤트 핸들링이 필요한 경우에도 유용하게 사용될 수 있다.

4. 확장성 및 유지보수성: 새로운 옵저버를 추가하거나 기존 옵저버를 제거함으로써 시스템을 쉽게 확장하거나 유지보수할 수 있다. 새로운 기능이나 로직을 추가할 때, 기존 코드를 변경하지 않고 옵저버를 추가하여 확장이 가능하다.

5. 모델-뷰-컨트롤러 (Model-View-Controller, MVC) 아키텍처의 일부: 옵저버 패턴은 MVC 아키텍처에서 모델과 뷰 간의 통신에 사용되는 핵심 패턴 중 하나이다. 모델의 상태가 변경되면, 뷰는 자동으로 업데이트되어 사용자에게 변경된 정보를 표시한다.

6. 단일 책임 원칙(SRP) 준수: 주체는 상태 변경에만 집중하고, 옵저버들은 각자의 역할에만 집중한다. 이는 단일 책임 원칙을 준수하며 코드를 더 쉽게 이해하고 유지보수할 수 있게 한다.

728x90
반응형