Programing/javascript

자바스크립트 Facade Pattern

2025. 4. 19. 09:04
반응형

Facade Pattern(퍼사드 패턴) 은 복잡한 서브시스템의 인터페이스를 단순화하여 외부에 일관된 인터페이스를 제공하는 구조 디자인 패턴입니다. 사용자 입장에서는 내부 구조를 몰라도 쉽게 기능을 사용할 수 있게 만들어줍니다.


🧱 Facade Pattern이란?

Facade Pattern은 여러 객체나 클래스의 복잡한 내부 로직을 하나의 인터페이스로 감싸서 사용자가 간단히 접근하도록 돕는 구조입니다. 사용자는 퍼사드만 보고 기능을 사용할 수 있으며, 내부 구현은 숨겨집니다.

class CPU {
    start() {
        console.log("CPU 시작");
    }
}

class Memory {
    load() {
        console.log("메모리 로딩");
    }
}

class HardDrive {
    read() {
        console.log("하드디스크 읽기");
    }
}

class ComputerFacade {
    constructor() {
        this.cpu = new CPU();
        this.memory = new Memory();
        this.hardDrive = new HardDrive();
    }
    startComputer() {
        this.cpu.start();
        this.memory.load();
        this.hardDrive.read();
    }
}

const computer = new ComputerFacade();
computer.startComputer();

✅ 장점

  1. 단순화된 인터페이스: 복잡한 시스템을 간편하게 사용할 수 있음
  2. 결합도 감소: 사용자와 내부 시스템 간의 의존성이 낮아짐
  3. 캡슐화: 내부 구현을 숨기고 변경이 용이함

❌ 단점

  1. 퍼사드 클래스에 로직이 집중될 수 있음: 지나치게 많은 책임을 질 수 있음
  2. 내부 기능 활용 제약: 퍼사드를 거치면 내부 시스템의 세부 기능 사용이 어려움
  3. 추가 계층으로 인한 오버헤드: 단순한 경우엔 불필요한 복잡성이 될 수 있음

🛠️ 실전 예시: 알림 시스템 퍼사드

class EmailService {
    sendEmail(to, message) {
        console.log(`이메일 발송: ${to} - ${message}`);
    }
}

class SMSService {
    sendSMS(to, message) {
        console.log(`SMS 발송: ${to} - ${message}`);
    }
}

class NotificationFacade {
    constructor() {
        this.emailService = new EmailService();
        this.smsService = new SMSService();
    }
    notifyUser(type, to, message) {
        if (type === 'email') {
            this.emailService.sendEmail(to, message);
        } else if (type === 'sms') {
            this.smsService.sendSMS(to, message);
        }
    }
}

const notifier = new NotificationFacade();
notifier.notifyUser('email', 'user@example.com', '이메일 테스트');
notifier.notifyUser('sms', '010-1234-5678', '문자 테스트');

🧩 결론

Facade Pattern은 복잡한 시스템을 하나의 단순한 인터페이스로 감싸서 사용성과 유지보수성을 향상시키는 데 효과적입니다. 특히 모듈이 많은 대형 애플리케이션에서 유용하며, 기능을 캡슐화하고 변경에 유연하게 대응할 수 있도록 돕는 핵심 설계 전략입니다.

반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 Mediator Pattern  (0) 2025.04.19
자바스크립트 Observer Pattern  (0) 2025.04.19
자바스크립트 Adapter Pattern  (0) 2025.04.19
자바스크립트 Proxy Pattern  (0) 2025.04.19
자바스크립트 Decorator Pattern  (0) 2025.04.19
자바스크립트 Module Pattern  (0) 2025.04.19
자바스크립트 Builder Pattern  (0) 2025.04.19
자바스크립트 Prototype Pattern  (1) 2025.04.19
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Adapter Pattern
  • 자바스크립트 Proxy Pattern
  • 자바스크립트 Decorator Pattern
  • 자바스크립트 Module Pattern
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)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트유틸
    IT·컴퓨터
    SQL
    IT블로그
    위시리스트
    자바
    자바스크립트
    기초
    읽고 싶은 책
    iT's MY LiFE
    디자인패턴
    php
    js패턴
    JavaScript
    Java
    IT 관련
    It
    jsp
    블로그
    사고 싶은 책
Dongkkase
자바스크립트 Facade Pattern
상단으로

티스토리툴바