반응형
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 = '서른'; // 오류 발생
✅ 장점
- 접근 제어: 객체의 속성 접근 및 설정을 통제 가능
- 부가 기능 추가: 로깅, 검증, 캐싱 등 추가 로직 삽입 용이
- 객체 추상화: 클라이언트는 원본 객체의 존재를 몰라도 됨
❌ 단점
- 성능 저하 가능성: 모든 접근에 대해 가로채기 작업이 발생
- 복잡도 증가: 코드 흐름이 간단하지 않음
- 디버깅 어려움: 내부 동작이 가로채져 있어 디버깅이 힘들 수 있음
🛠️ 실전 예시: 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 |