Programing/javascript

자바스크립트 Proxy Pattern

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

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}`);
        return target[prop];
    },
    set(target, prop, value) {
        console.log(`프로퍼티 설정: ${prop} = ${value}`);
        if (prop === 'age' && typeof value !== 'number') {
            throw new TypeError('age는 숫자여야 합니다.');
        }
        target[prop] = value;
        return true;
    }
});

userProxy.age = 30; // 정상
console.log(userProxy.name); // Alice
userProxy.age = '서른'; // 오류 발생

✅ 장점

  1. 접근 제어: 객체의 속성 접근 및 설정을 통제 가능
  2. 부가 기능 추가: 로깅, 검증, 캐싱 등 추가 로직 삽입 용이
  3. 객체 추상화: 클라이언트는 원본 객체의 존재를 몰라도 됨

❌ 단점

  1. 성능 저하 가능성: 모든 접근에 대해 가로채기 작업이 발생
  2. 복잡도 증가: 코드 흐름이 간단하지 않음
  3. 디버깅 어려움: 내부 동작이 가로채져 있어 디버깅이 힘들 수 있음

🛠️ 실전 예시: API 요청 제한 프록시

function fetchData(url) {
    console.log(`데이터 요청: ${url}`);
}

const apiProxy = new Proxy(fetchData, {
    apply(target, thisArg, args) {
        const url = args[0];
        if (url.includes('admin')) {
            console.log('접근 제한: 관리자 API 차단됨');
            return;
        }
        return Reflect.apply(target, thisArg, args);
    }
});

apiProxy('https://api.example.com/user');
apiProxy('https://api.example.com/admin');

🧩 결론

Proxy Pattern은 자바스크립트에서 객체의 동작을 세밀하게 제어할 수 있는 유연하고 강력한 도구입니다. 특히 접근 제한, 데이터 유효성 검증, 가상화 등의 용도에서 유용하게 활용되며, 원본 객체에 영향을 주지 않고 기능을 추가할 수 있어 유지보수성과 확장성을 모두 만족시킬 수 있습니다.

반응형

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

자바스크립트 Command Pattern  (0) 2025.04.19
자바스크립트 Mediator Pattern  (0) 2025.04.19
자바스크립트 Observer Pattern  (0) 2025.04.19
자바스크립트 Adapter Pattern  (0) 2025.04.19
자바스크립트 Facade Pattern  (0) 2025.04.19
자바스크립트 Decorator Pattern  (0) 2025.04.19
자바스크립트 Module Pattern  (0) 2025.04.19
자바스크립트 Builder Pattern  (0) 2025.04.19
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 Observer Pattern
  • 자바스크립트 Adapter Pattern
  • 자바스크립트 Facade Pattern
  • 자바스크립트 Decorator 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
    IT블로그
    iT's MY LiFE
    js패턴
    php
    Java
    jsp
    IT 관련
    IT·컴퓨터
    사고 싶은 책
    자바스크립트유틸
    SQL
    자바스크립트
    JavaScript
    기초
    블로그
    자바
    읽고 싶은 책
    디자인패턴
    위시리스트
Dongkkase
자바스크립트 Proxy Pattern
상단으로

티스토리툴바