정처기 감자
SW 설계디자인패턴

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

옵저버 observer 패턴 - 자바스크립트 예제

SW설계디자인패턴
읽는데 5분 소요
처음 쓰여진 날: 2025-09-01
마지막 수정일: 2025-09-01
조회수: —
선수학습(1개)
  • 정보처리기사 실기를 위한 디자인 패턴 암기 방법

요약

옵저버 observer 패턴을 타입스크립트 코드와 함께 알아봅니다.

옵저버 패턴 요약

패턴 종류핵심 키워드
옵저버 (Observer)한 객체 바뀌면 의존하는 다른 객체에 연락 가고 자동으로 갱신, 일대다, 발행(Publish)/수신(Subscribe)
옵저버 패턴 감자
옵저버 패턴 감자

옵저버 (Observer) 패턴

옵저버 패턴은 한 객체의 상태가 변하면, 그 객체에 의존하는 다른 객체들에게 자동으로 알림(notification)을 보내고 상태를 갱신할 수 있게 하는 일대다(one-to-many) 의존성 관계를 정의하는 패턴입니다. 상태를 가진 객체를 Subject(주제), 상태의 변화를 통지받는 객체들을 Observer(관찰자)라고 합니다.

현실 세계의 예로 '유튜브 채널 구독' 을 들 수 있습니다. 유튜버(Subject)가 새로운 영상을 올리면, 그 채널을 구독(register)한 모든 구독자(Observer)들에게 자동으로 알림이 갑니다. 구독을 취소(unregister)하면 더 이상 알림을 받지 않습니다. 옵저버 패턴은 이처럼 느슨하게 연결된(loosely coupled) 객체들 간의 자동화된 소통 방식을 구현할 때 매우 유용합니다.

정처기 감자 유튜브 구독 좋아요 부탁드려요

기본 구조

  • Subject: 관찰 대상이 되는 객체입니다. 내부에 옵저버 목록을 가지고 있으며, 옵저버를 등록(register)하고 제거(unregister)하는 메서드를 제공합니다. 상태가 변경되면 notify() 메서드를 호출하여 모든 옵저버에게 변경 사실을 알립니다.
  • Observer: Subject의 상태 변화를 통지받는 객체들이 구현해야 할 인터페이스입니다. 보통 update()와 같은 메서드를 정의하며, Subject로부터 알림이 오면 이 메서드가 호출됩니다.
  • ConcreteSubject: Subject 인터페이스를 구현한 구체적인 클래스입니다. 상태를 저장하고, 상태가 변경될 때 옵저버들에게 알리는 역할을 합니다.
  • ConcreteObserver: Observer 인터페이스를 구현한 구체적인 클래스입니다. update() 메서드가 호출되면 특정 동작을 수행합니다.

예시: 뉴스레터 구독 시스템

새로운 기사가 발행될 때마다 구독자들에게 이메일로 알려주는 뉴스레터 시스템을 만들어 보겠습니다.

먼저, 모든 옵저버(구독자)가 구현할 Observer 인터페이스를 정의합니다.

javascript
코드 하이라이팅 중…

다음으로, 관찰 대상인 NewsPublisher(뉴스 발행사)를 Subject로 만듭니다.

javascript
코드 하이라이팅 중…

이제 구체적인 구독자, EmailSubscriber를 ConcreteObserver로 구현합니다.

javascript
코드 하이라이팅 중…

NewsPublisher는 어떤 종류의 구독자가 있는지, 구독자가 이메일을 받는지 앱 푸시를 받는지 전혀 알 필요가 없습니다. 그저 subscribers 목록에 있는 각 객체의 update() 메서드를 호출할 뿐입니다. 만약 '앱 푸시 알림' 기능이 필요하다면, AppPushSubscriber라는 새로운 옵저버 클래스를 만들어 등록하기만 하면 됩니다.

이처럼 옵저버 패턴은 Subject와 Observer 간의 결합도를 낮춰, 시스템을 유연하고 확장 가능하게 만듭니다.

옵저버 패턴 중요 키워드

  • 일대다(one-to-many) 의존 관계를 정의합니다.
  • 느슨한 결합(Loose Coupling): Subject는 Observer의 구체적인 클래스를 몰라도 됩니다.
  • 상태 변경 시 자동으로 의존 객체에 전파(broadcast)됩니다.
  • 이벤트 기반 시스템, MVC(Model-View-Controller) 아키텍처 등에서 널리 사용됩니다.
  • 발행/구독(Publish/Subscribe) 모델이라고도 불립니다.

정처기 실기 기출 문제

메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • 디자인 패턴 정보처리기사 기출 문제 모음

추천 개념

Beta

관련 글

(41개)
제목태그업데이트시험
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
팩토리 메서드 factory method 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-11-03-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999