[java] 프록시 패턴
프록시 패턴은 객체 지향 설계 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)을 따르며, 구조적 디자인 패턴 중 하나입니다. 프록시는 실제 객체(real object)에 대한 대리자(대리 객체) 역할을 수행하며, 클라이언트와 실제 객체 간의 중계 역할을 담당합니다.
왜 프록시 패턴을 사용해야 하나요?
프록시 패턴을 사용하면, 실제 객체에 접근하는 방식을 제어하고 객체에 접근하기 전에 추가적인 작업을 수행할 수 있습니다. 이를 통해 실제 객체의 생성 및 초기화를 지연시키거나, 객체에 대한 접근 및 보안을 제어할 수 있습니다.
프록시 패턴의 예시
public interface Image {
void display();
}
public class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadFromDisk(filename);
}
@Override
public void display() {
System.out.println("Displaying " + filename);
}
private void loadFromDisk(String filename) {
System.out.println("Loading " + filename);
}
}
public class ProxyImage implements Image {
private RealImage realImage;
private String filename;
public ProxyImage(String filename) {
this.filename = filename;
}
@Override
public void display() {
if (realImage == null) {
realImage = new RealImage(filename);
}
realImage.display();
}
}
프록시 패턴의 장점
- 보안 및 보호: 실제 객체에 대한 직접적인 접근을 제어하고, 보안 및 권한 부여를 수행할 수 있습니다.
- 지연된 초기화: 실제 객체의 생성과 초기화 과정이 필요한 경우에, 이를 지연시켜 성능을 최적화할 수 있습니다.
- 대용량 객체의 캐싱: 실제 객체 접근 시, 캐싱을 통해 반복적인 접근을 최적화할 수 있습니다.
프록시 패턴은 실제 객체에 대한 접근을 중개하며, 특정 기능을 추가할 수 있는 유연한 구조를 제공합니다. Java에서는 인터페이스를 이용하여 프록시 객체를 생성하여 구현할 수 있습니다.
자세한 내용은 Java Design Patterns: The Proxy Pattern를 참고하시기 바랍니다.