Design Patterns

[Design Patterns] Observer

우라릭 2024. 6. 9. 00:34

 

 

목차

    개요

    내용

    요약

    객체간에 1 : N 연관관계를 설정해서 한 객체가 상태를 바꿀 때, 연관된 모든 객체들에게 알리자

    동기

    클래스를 나누다보면 연관된 객체들간에 일관성을 지키기가 힘들어진다. 그렇다고 객체를 강하게 결합시키자니 재사용성이 떨어진다.. 이럴 때 옵저버 패턴을 사용할 수 있다.

    이 패턴의 핵심 객체는 옵저버와 관찰 대상(subject) 객체이다. 관찰 대상 객체에서 상태 변화가 나타나면 옵저버 객체들의 메소드를 호출한다. 이러한 상호작용은 publish-subscribe로도 알려져있다.

    구조

    이야깃거리

    언제 써야 할까?

    • 자신의 상태가 변화했을 때 대상 객체가 누구냐와 관계없이 이를 알려줘야하는 객체가 있을 때
    • 한 객체의 상태 변화가 다른 객체의 상태 변화로 이어져야하고 얼마나 많은 다른 객체가 있을지 알 수 없을 때

    장단점

    • (Pros) 추상화된 커플링
    • (Cons) 예상치못한 업데이트

    Case Study

    Case 1. java.util.Observer

    JDK에는 옵저버 패턴을 구현하기 위한 인터페이스인 Observer와 Observable을 제공한다. 

     

    출처

    GoF Design Patterns

    'Design Patterns' 카테고리의 다른 글

    [Design Patterns] Strategy  (0) 2024.06.16
    [Design Patterns] State  (0) 2024.06.09
    [Design Patterns] Memento  (0) 2024.06.06
    [Design Patterns] Mediator  (0) 2024.05.13
    [Design Patterns] Iterator  (0) 2024.04.21