728x90
프록시 패턴
- 구조 패턴 카테고리
- 하나의 대상 객체 또는 주제객체가 있을때, 클라이언트는 바로 해당 객체에 접근하지 않고 proxy 객체를 통해 접근하는 패턴
- proxy는 실제 객체와 클라이언트 사이에 존재한다.
필요한 이유
- 접근 권한 제어
- 데이터 로그 로깅 제어
- 은행 카드
구성요소
- Client 사용자
- Subject 인터페이스
- Proxy 대리인
- Real Subject 실제 객체
코드
// subject 인터페이스
interface Payment {
request(amout: number): void;
}
// real subject
class Cash implements Payment {
request(amount: number) {
console.log(`결제 요청 완료... 금액 : ${amount}`);
}
}
const targetObject = new Cash();
// proxy(실제 객체, 요청 처리 핸들러) js 에서 지원하는 Proxy 를 사용하여 구현
const paymentProxy = new Proxy(targetObject, {
get: (object, prop) => {
// object: 해당 객체 참조
// prop : 구현하는 인터페이스의 메서드
if (object[prop]) {
return object[prop];
}
throw new Error("operation not implemented");
},
});
paymentProxy.request(100);
// 결제 요청 완료... 금액 : 100
paymentProxy.add(100);
// Error : "operation not implemented"
728x90
'디자인패턴' 카테고리의 다른 글
디자인패턴 - 전략패턴 (0) | 2024.02.18 |
---|---|
디자인패턴 - 어댑터 패턴 (0) | 2024.02.18 |
디자인패턴 - 퍼사드패턴 (0) | 2024.02.17 |
디자인패턴 - 팩토리 메서드 패턴, 추상 팩토리 패턴 (0) | 2024.02.16 |
디자인패턴 - 싱글톤(Singleton) 패턴 (1) | 2024.02.15 |
댓글