Programing/javascript

자바스크립트의 Behavioral 패턴: 객체 간의 소통을 설계하다

2025. 4. 19. 06:53
반응형

소프트웨어 디자인 패턴 중 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
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Factory Pattern
  • 자바스크립트 Constructor Pattern
  • 자바스크립트의 Structural 패턴: 객체 구조의 유연함을 설계하다
  • 자바스크립트의 Creational 패턴: 객체 생성의 정석
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    php
    자바스크립트유틸
    사고 싶은 책
    SQL
    위시리스트
    IT·컴퓨터
    디자인패턴
    Java
    iT's MY LiFE
    It
    블로그
    기초
    자바
    js패턴
    IT블로그
    JavaScript
    읽고 싶은 책
    IT 관련
    jsp
Dongkkase
자바스크립트의 Behavioral 패턴: 객체 간의 소통을 설계하다
상단으로

티스토리툴바