옵저버 패턴

2020. 1. 18. 09:30·OOP

Observer Pattern

옵저버 패턴이란?

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의해요.

일대다 관계는 주제(Subject) 와 옵저버(Observer) 에 의해 정의돼요.

옵저버는 주제에 의존하고
주제의 상태가 바뀌면 옵저버한테 연락이 가고
연락방법에 따라 옵저버에 있는 값이 새로운 값으로 갱신될 수도 있어요.

클래스 다이어그램

image

  • Subject 인터페이스는 객체에서 옵저버로 등록하거나 옵저버 목록에서 탈퇴하고 싶을 때는 이 인터페이스에 있는 메소드를 사용하죠

  • 옵저버가 될 가능성이 있는 객체에서는 반드시 Observer 인터페이스를 구현해야 해요. 이 인터페이스에는 주제의 상태가 바뀌었을 때 호출되는 update() 메소드가 있어요.

  • 주제 클래스(ConcreteSubject)에는 옵저버 등록 및 해지를 위한 메소드 외에 상태가 바뀔때마다 모든 옵저버들에게 연락을 하기 위한 notifyObservers() 메소드가 있어요.

  • Observer 인터페이스를 구현한 클래스는 옵저버가 돼요. 각 옵저버는 특정 주제 객체에 등록을 해서 연락을 받을 수 있어요.

느슨한 결합 (Loose Coupling)

두 객체가 느슨하게 결합되어 있다는 것은, 그 둘이 상호작용을 하긴 하지만 서로에 대해 잘 모른다는 것을 의미해요.

  • 주제는 옵저버에 대해서 아는 것은 옵저버가 특정 인터페이스(Observer)를 구현했다는 것 뿐이에요. 옵저버 무엇을 하는지는 모르지요

  • 새로운 형식의 옵저버를 추가하려고 할 때 주제를 변경할 필요가 없어요. 새로운 클래스에서 Observer 인터페이스를 구현하고 옵저버로 등록하기만 돼요.

반응형
'OOP' 카테고리의 다른 글
  • 객체지향 사실과 오해 - 책임과 메시지
  • 객체지향의 사실과 오해-Chapter 6,7
  • 객체지향 특성 - 다형성
  • 객체지향 특성 - 상속
Jadie Blog
Jadie Blog
  • Jadie Blog
    Jadie
    Jadie Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • OOP (7)
      • DDD (1)
      • JAVA (8)
      • Spring (12)
      • Kafka (1)
      • TDD,Test (4)
      • Basic (1)
      • ETC (1)
      • MySQL (0)
      • Javascript (0)
      • Spark (3)
      • Infra (2)
      • Algorithm (0)
      • Network (1)
      • Jobs (0)
      • 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 휴튼
  • 공지사항

  • 인기 글

  • 태그

    테스트
    Kafka
    JPQL
    MASTER
    객체지향사실과오해
    의존역전원칙
    HTTP #HTTPS
    Spring
    메시징시스템
    Resilience4jFeign
    springboot
    OOP
    jpa
    OAuth2 #Spring
    JAVA #IO
    MSA
    Transactional Outbox
    글또
    추상클래스 #인터페이스
    slave
    객체지향
    java
    캡슐화
    localdatetime
    routingdatasource
    Test
    우아한스터디
    Spring #ApplicationContext
    API문서
    entitymanager
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jadie Blog
옵저버 패턴
상단으로

티스토리툴바