자바스크립트 Observer Pattern
·
Programing/javascript
Observer Pattern(옵서버 패턴) 은 객체 간의 일대다(1:N) 관계를 정의하여, 한 객체의 상태가 변경되었을 때 의존 객체들이 자동으로 알림을 받고 갱신되도록 하는 행동(Behavioral) 디자인 패턴입니다.🧱 Observer Pattern이란?Observer Pattern은 주체(Subject) 와 옵서버(Observer) 로 역할이 나뉘며, 주체는 자신의 상태 변화를 관찰자에게 통보합니다. 자바스크립트에서는 이벤트 시스템이나 상태 관리 로직에 널리 활용됩니다.class Subject { constructor() { this.observers = []; } subscribe(observer) { this.observers.push(observer..
자바스크립트 Adapter Pattern
·
Programing/javascript
Adapter Pattern(어댑터 패턴) 은 서로 다른 인터페이스를 가진 객체들이 함께 동작할 수 있도록 중간에서 변환해주는 구조 디자인 패턴입니다. 외부 라이브러리나 기존 시스템과의 호환성을 유지하면서 새로운 기능을 통합하고자 할 때 유용하게 사용됩니다.🧱 Adapter Pattern이란?Adapter Pattern은 기존 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환하는 역할을 합니다. 어댑터는 기존 객체를 감싸(wrapper) 클라이언트가 원하는 방식으로 동작하게 만들어줍니다.// 기존 코드class OldPrinter { printOld(text) { console.log(`Old print: ${text}`); }}// 새로운 인터페이스를 기대하는 클라이언트..
자바스크립트 Proxy Pattern
·
Programing/javascript
Proxy Pattern(프록시 패턴) 은 다른 객체에 대한 접근을 제어하기 위해 대리 객체(프록시)를 사용하는 구조 디자인 패턴입니다. 자바스크립트에서는 ES6부터 도입된 Proxy 객체를 통해 이를 쉽게 구현할 수 있습니다.🧱 Proxy Pattern이란?Proxy Pattern은 원본 객체에 대한 접근을 가로채고, 그 앞단에서 행동을 제어하거나 로직을 추가하는 방식입니다. 보안, 로깅, 캐싱, 데이터 검증 등 다양한 용도로 활용됩니다.const user = { name: 'Alice', age: 25};const userProxy = new Proxy(user, { get(target, prop) { console.log(`프로퍼티 접근: ${prop}`); ..
자바스크립트 Facade Pattern
·
Programing/javascript
Facade Pattern(퍼사드 패턴) 은 복잡한 서브시스템의 인터페이스를 단순화하여 외부에 일관된 인터페이스를 제공하는 구조 디자인 패턴입니다. 사용자 입장에서는 내부 구조를 몰라도 쉽게 기능을 사용할 수 있게 만들어줍니다.🧱 Facade Pattern이란?Facade Pattern은 여러 객체나 클래스의 복잡한 내부 로직을 하나의 인터페이스로 감싸서 사용자가 간단히 접근하도록 돕는 구조입니다. 사용자는 퍼사드만 보고 기능을 사용할 수 있으며, 내부 구현은 숨겨집니다.class CPU { start() { console.log("CPU 시작"); }}class Memory { load() { console.log("메모리 로딩"); }}class Har..
자바스크립트 Decorator Pattern
·
Programing/javascript
Decorator Pattern(데코레이터 패턴) 은 기존 객체에 새로운 기능을 동적으로 추가할 수 있게 해주는 구조 디자인 패턴입니다. 클래스나 함수를 수정하지 않고도 기능을 확장할 수 있어 유지보수성과 유연성이 매우 높습니다.🧱 Decorator Pattern이란?Decorator Pattern은 기존 객체를 감싸는(wrapper) 방식으로 기능을 확장하는 구조입니다. 자바스크립트에서는 고차 함수나 클래스 기반의 데코레이터를 통해 쉽게 구현할 수 있습니다.function coffee() { return '커피';}function withMilk(beverage) { return function () { return beverage() + ' + 우유'; };}functi..
자바스크립트 Module Pattern
·
Programing/javascript
Module Pattern(모듈 패턴) 은 변수나 함수를 외부에 노출하지 않고, 캡슐화(encapsulation) 를 통해 내부 구현을 숨길 수 있도록 하는 디자인 패턴입니다. 전역 네임스페이스 오염을 방지하고, 코드를 구조화하는 데 매우 유용합니다.🧱 Module Pattern이란?Module Pattern은 즉시 실행 함수(IIFE) 와 클로저를 활용하여 프라이빗(private) 데이터와 퍼블릭(public) API를 명확히 분리합니다. 이를 통해 외부에서 접근 가능한 인터페이스만 공개하고, 나머지는 내부에서만 사용할 수 있게 만듭니다.const CounterModule = (function () { let count = 0; function changeBy(val) { co..
자바스크립트 Builder Pattern
·
Programing/javascript
Builder Pattern(빌더 패턴) 은 복잡한 객체를 단계적으로 생성할 수 있도록 도와주는 생성 패턴 중 하나입니다. 각 단계는 메서드 체이닝을 통해 구성되며, 최종적으로는 완성된 객체를 반환하는 구조입니다.🧱 Builder Pattern이란?Builder Pattern은 복잡한 객체의 생성 과정과 표현 방법을 분리하여, 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 해주는 패턴입니다. 특히, 필수 값과 선택 값을 구분해야 하거나 생성 단계가 여러 개일 때 유용합니다.class CarBuilder { constructor() { this.car = {}; } setBrand(brand) { this.car.brand = brand; ..
자바스크립트 Prototype Pattern
·
Programing/javascript
Prototype Pattern(프로토타입 패턴) 은 기존 객체를 복제하여 새로운 객체를 생성하는 구조의 디자인 패턴입니다. 자바스크립트는 본래 프로토타입 기반 언어이기 때문에, 이 패턴을 매우 자연스럽게 구현할 수 있습니다.🧱 Prototype Pattern이란?Prototype Pattern은 기존 객체를 복제(clone)하여 새로운 객체를 생성하고, 해당 객체를 기반으로 기능을 확장하는 방식입니다. 객체 간 상속보다 복제와 덮어쓰기를 통한 유연한 설계가 가능하며, 메모리 효율이 높습니다.const animal = { type: '동물', speak() { console.log(`${this.name}가 소리를 냅니다.`); }};const dog = Object.cre..
자바스크립트 Singleton Pattern
·
Programing/javascript
Singleton Pattern(싱글턴 패턴) 은 특정 클래스의 인스턴스를 단 하나만 생성하도록 제한하는 디자인 패턴입니다. 이 패턴은 전역 상태를 관리할 때 유용하며, 애플리케이션 설정, DB 연결, 로그 기록 등에서 자주 활용됩니다.🧱 Singleton Pattern이란?Singleton Pattern은 하나의 인스턴스를 생성하고, 이를 어디서든 접근할 수 있도록 보장하는 구조입니다. 자바스크립트에서는 클로저와 모듈 패턴을 활용하여 구현됩니다.const Singleton = (function () { let instance; function createInstance() { return { timestamp: Date.now() }; } return { ..
자바스크립트 Factory Pattern
·
Programing/javascript
Factory Pattern(팩토리 패턴) 은 객체 생성 로직을 외부에 감추고, 동일한 인터페이스를 통해 객체를 생성할 수 있도록 도와주는 디자인 패턴입니다. 객체를 생성할 때 조건에 따라 다양한 객체를 반환할 수 있는 유연성이 큰 장점입니다.🧱 Factory Pattern이란?Factory Pattern은 객체 생성을 위한 인터페이스를 정의하고, 하위 클래스가 어떤 클래스를 인스턴스화할지를 결정하는 구조입니다. 자바스크립트에서는 보통 함수나 클래스를 사용하여 객체 생성을 추상화합니다.function createUser(type, name) { if (type === 'admin') { return { name, role: 'Administrat..