javaScript
옵저버 패턴이란?
와이다이어리
2025. 5. 20. 16:47
반응형
옵저버 패턴(Observer Pattern)이란?
옵저버 패턴은 어떤 객체의 상태가 바뀌면, 그와 의존 관계에 있는 객체들이 자동으로 알림을 받아 갱신되는 패턴입니다.
쉽게 말해 한 객체가 변하면 다른 객체들이 알아서 반응하게 만드는 구조입니다.
자바스크립트에서의 옵저버 패턴
class Subject {
constructor() {
this.observers = [];
}
subscribe(observer) {
this.observers.push(observer);
}
notify(data) {
this.observers.forEach(observer => observer(data));
}
}
// 사용 예시
const subject = new Subject();
// 옵저버 등록
subject.subscribe((msg) => console.log('A가 받은 메시지:', msg));
subject.subscribe((msg) => console.log('B가 받은 메시지:', msg));
// 상태 변경 후 알림
subject.notify('📢 새로운 뉴스가 도착했습니다!');
리액트에서의 옵저버 패턴
리액트는 옵저버 패턴을 내장한 프레임워크입니다.
컴포넌트는 상태(state)라는 주체를 구독(observer)합니다.
상태가 바뀌면 자동으로 다시 렌더링됩니다.
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0); // count가 "subject"
return (
<div>
<p>현재 카운트: {count}</p> {/* 이 부분이 "observer" */}
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
이 예제에서 count가 바뀌면, 이 값을 사용하고 있는 부분이 자동으로 리렌더링됩니다.
즉, 리액트 훅(useState, useEffect)을 사용하는 순간 옵저버 패턴을 쓰고 있는 것입니다.
반응형