Proxy는 뭔가를 대신해서 처리하는 것이다.
Proxy Class를 통해서 대신 전달하는 형태로 설계되며, 실제 Client는 Proxy로 부터 결과를 받는다.
Cache의 기능으로도 활용이 가능하다.
SOLID 중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다.
먼저 cache의 기능처럼 구현해보자
public class BrowserProxy implements IBrowser {
private String url;
private Html html;
public BrowserProxy(String url) {
this.url = url;
}
@override
public Html show() {
if (html == null) {
this.html = new Html(url);
System.out.println("Borwser loading...");
}
System.out.println("Browser cache");
return hrml;
}
}
public class Main {
public static void main(String[] args) {
IBrowser browser = new BrowserProxy("www.naver.com");
browser.show(); // Browser loading...
browser.show(); // Browser cache
browser.show(); // Browser cache
}
}
이처럼 proxy 패턴은 특정한 함수, 요청에 전후로 처리하고 싶은 기능을 넣고 싶을 때나 어떠한 기능을 대신하여 처리해주는 패턴이다.