반응형
소프트웨어 디자인 패턴 중 Behavioral Pattern(행위 패턴) 은 객체 간의 상호작용에 초점을 맞춘 패턴입니다.
객체들이 어떻게 협력하고 메시지를 주고받는지를 구조적으로 설계함으로써, 유연한 커뮤니케이션 구조를 제공합니다.
🧱 Behavioral Pattern이란?
Behavioral Pattern은 객체 간 책임 분산과 상호작용을 제어하는 구조로, 복잡한 비즈니스 로직을 깔끔하게 나누는 데 효과적입니다.
대표적인 Behavioral 패턴 종류
- Observer Pattern (옵서버 패턴)
- Strategy Pattern (전략 패턴)
- Command Pattern (커맨드 패턴)
- Iterator Pattern (이터레이터 패턴)
- Mediator Pattern (미디에이터 패턴)
- State Pattern (상태 패턴)
- Chain of Responsibility Pattern (책임 연쇄 패턴)
⚙️ 패턴별 설명 및 예시
1. Observer Pattern
class Subject {
constructor() {
this.observers = [];
}
subscribe(observer) {
this.observers.push(observer);
}
notify(data) {
this.observers.forEach(observer => observer.update(data));
}
}
class Observer {
update(data) {
console.log("Received:", data);
}
}
const subject = new Subject();
const observer1 = new Observer();
subject.subscribe(observer1);
subject.notify("Event triggered");
장점
- 객체 간 결합도를 낮출 수 있음
단점
- 과도한 옵서버 등록 시 관리 복잡성 증가
2. Strategy Pattern
class Payment {
constructor(strategy) {
this.strategy = strategy;
}
pay(amount) {
this.strategy.pay(amount);
}
}
class CardPayment {
pay(amount) {
console.log(`Paid ${amount} using Card.`);
}
}
const payment = new Payment(new CardPayment());
payment.pay(100);
장점
- 알고리즘을 캡슐화하고, 런타임에 변경 가능
단점
- 전략 클래스가 많아질 수 있음
3. Command Pattern
class Light {
on() { console.log("Light On"); }
off() { console.log("Light Off"); }
}
class LightOnCommand {
constructor(light) { this.light = light; }
execute() { this.light.on(); }
}
const light = new Light();
const command = new LightOnCommand(light);
command.execute();
장점
- 요청을 객체로 캡슐화하여 다양한 작업 처리 가능
단점
- 명령 클래스가 많아질 수 있음
✅ 결론
자바스크립트에서 Behavioral Pattern을 활용하면 객체 간 소통과 책임 분리를 보다 명확하게 구현할 수 있습니다.
이러한 패턴은 복잡한 사용자 인터랙션, 이벤트 흐름, 상태 전환 등에서 특히 효과적입니다.
코드의 유연성과 재사용성을 높이기 위해 꼭 알아야 할 패턴군입니다.
반응형
'Programing > javascript' 카테고리의 다른 글
| 자바스크립트 Prototype Pattern (1) | 2025.04.19 |
|---|---|
| 자바스크립트 Singleton Pattern (0) | 2025.04.19 |
| 자바스크립트 Factory Pattern (0) | 2025.04.19 |
| 자바스크립트 Constructor Pattern (0) | 2025.04.19 |
| 자바스크립트의 Structural 패턴: 객체 구조의 유연함을 설계하다 (0) | 2025.04.19 |
| 자바스크립트의 Creational 패턴: 객체 생성의 정석 (0) | 2025.04.19 |
| 💻 숫자를 한글 숫자 표기로 변환 (1) | 2025.04.18 |
| 💰 숫자를 한글로 금액 단위로 표현 (0) | 2025.04.18 |