- 객체지향 디자인패턴 중 하나로, 다른객체에 대한 대리자나 대변인 역할을 하는 객체를 제공하는 패턴
프록시
는 실제 서비스 객체를 대신하여, 그 객체에 대한 접근을 제어하는 대리 객체
예시
interface Image {
display(): void;
}
class RealImage implements Image {
private filename: string;
constructor(filename: string) {
this.filename = filename;
this.loadFromDisk();
}
private loadFromDisk(): void {
console.log(`Loading ${this.filename}`);
}
public display(): void {
console.log(`Displaying ${this.filename}`);
}
}
class ProxyImage implements Image {
private realImage: RealImage | null = null;
private filename: string;
constructor(filename: string) {
this.filename = filename;
}
public display(): void {
if (this.realImage === null) {
this.realImage = new RealImage(this.filename);
}
this.realImage.display();
}
}
// 사용
const image1 = new ProxyImage("image1.jpg");
const image2 = new ProxyImage("image2.jpg");
image1.display(); // 이미지 로드 후 표시
image1.display(); // 이미 로드된 이미지 표시
image2.display(); // 새 이미지 로드 후 표시