728x90
프록시(Proxy)는 '대리'라는 의미를 가지고 있습니다. 지금까지 배웠던 패턴들의 내용이 이름을 따라서 동작했으므로 우리는 프록시 패턴도 무언가를 대리하는 패턴임을 알 수 있습니다.
1. 프록시 패턴 소개
프록시 패턴은 실제 시능을 수행하는 객체를 대신해서 프록시 객체가 기능을 대신 수행해 주는 패턴입니다. 그런데 뭔가 대리로 기능을 수행하는 경우가 잘 떠오르지는 않습니다. 우리는 프록시 객체를 다음과 같은 두 가지 상황에서 이용하게됩니다.
- 실제 기능을 하는 객체가 자원을 많이 소모하는 경우
- 실제 객체에 대해서 접근 제어가 필요한 경우
2. 프록시 패턴 구현
프록시 패턴은 간단하게 뼈대만을 가지고 구현해 보겠습니다. 개인적으로 예를 들어서 구체적으로 설명을 처음 들었을 때 긴가민가 했던 경험이 있어서 오히려 헤맸던 기억이 있네요.
우선 동작을 정의한 인터페이스 입니다. 출력하는 기능을 한다는 것을 알 수 있습니다.
public interface IPrinter {
String print();
}
다음으로 실제 객체를 만들어봤습니다. "자몽"이라는 문자열을 반환하도록 한 실 객체입니다.
public class RealPrinter implements IPrinter {
@Override
public String print() {
return "자몽";
}
}
다음으로 프록시 객체입니다. printer라는 객체에 실 객체를 담아 출력을 합니다. 이렇게 함으로써 실 객체의 동작을 숨기는 동시에 프록시 객체가 실 객체의 역할을 해주고 있습니다.
public class ProxyPrinter implements IPrinter {
IPrinter printer;
@Override
public String print() {
System.out.println("프록시 객체");
printer = new RealPrinter();
return printer.print();
}
}
마지막으로 메인 메소드입니다. 메인에서 프록시 객체를 만들고 프록시 객체를 동작하게 합니다.
public class ProxyMain {
public static void main(String[] args) {
IPrinter proxy = new ProxyPrinter();
System.out.println(proxy.print());
}
}
결과를 확인해보면 프록시 객체를 통해 실 객체가 제대로 동작했음을 알 수 있습니다.
https://github.com/Bam-j/DesignPattern/tree/master/src/Proxy
728x90
'Programming > 디자인 패턴' 카테고리의 다른 글
스테이트 패턴 State Pattern (0) | 2021.09.29 |
---|---|
이터레이터 패턴 Iterator Pattern (0) | 2021.09.26 |
템플릿 메소드 패턴 Template Method Pattern (0) | 2021.09.23 |
퍼사드 패턴 Façade Pattern (0) | 2021.09.20 |
어댑터 패턴 Adapter 패턴 (0) | 2021.09.19 |
댓글