프록시(Proxy) 는 대리자 또는 대변인을 의미합니다.
대리자/대변인 이라고 하면 다른 누군가를 대신해서 할 일을 수행하는 존재이죠.
청와대 또는 백악관에서도 청와대 대변인, 백악관 대변인이 등장합니다.
따라서 프록시를 풀어 말하자면 "자신이 할 일을 다른 누군가가 대신해서 수행해주는 것"이라고 생각하면 될 것 같습니다.
이제 프록시 패턴을 코드에 적용해 보도록 하겠습니다.
package proxy;
public class Service {
public String runSomething(){
return "서비스";
}
}
package proxy;
public class ClientWithNoProxy {
public static void main(String[] args) {
Service service = new Service();
System.out.println(service.runSomething());
}
}
이번에는 프록시 패턴이 적용해서 만들어보겠습니다.
package proxy;
public interface IService {
String runSomething();
}
package proxy;
public class Service implements IService{
public String runSomething(){
return "서비스";
}
}
package proxy.proxy;
public class Proxy implements IService{
IService iService;
public String runSomething(){
System.out.println("호출에 대한 흐름 제어가 주목적, 반환 결과를 그대로 전달");
iService = new Service();
return iService.runSomething();
}
}
package proxy.proxy;
public class ClientWithProxy {
public static void main(String[] args) {
IService proxy = new Proxy();
System.out.println(proxy.runSomething());
}
}
프록시는 Service를 대신할 뿐 그 기능에 자신이 관여하지 않습니다.
따라서 프록시는 "제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴" 입니다.