프록시 패턴(Proxy pattern)

0

Spring

목록 보기
9/12

프록시(Proxy)대리자 또는 대변인을 의미합니다.
대리자/대변인 이라고 하면 다른 누군가를 대신해서 할 일을 수행하는 존재이죠.

청와대 또는 백악관에서도 청와대 대변인, 백악관 대변인이 등장합니다.

따라서 프록시를 풀어 말하자면 "자신이 할 일을 다른 누군가가 대신해서 수행해주는 것"이라고 생각하면 될 것 같습니다.


프록시 패턴 미적용

이제 프록시 패턴을 코드에 적용해 보도록 하겠습니다.

Service

package proxy;

public class Service {
    public String runSomething(){
        return "서비스";
    }
}

ClientWithNoProxy

package proxy;

public class ClientWithNoProxy {
    public static void main(String[] args) {
        Service service = new Service();
        System.out.println(service.runSomething());
    }
}

프록시 패턴 적용

이번에는 프록시 패턴이 적용해서 만들어보겠습니다.

IService

package proxy;

public interface IService {
    String runSomething();
}

Service

package proxy;

public class Service implements IService{
    public String runSomething(){
        return "서비스";
    }
}

Proxy

package proxy.proxy;

public class Proxy implements IService{
    IService iService;

    public String runSomething(){
        System.out.println("호출에 대한 흐름 제어가 주목적, 반환 결과를 그대로 전달");

        iService = new Service();
        return iService.runSomething();
    }
}

ClientWithProxy

package proxy.proxy;

public class ClientWithProxy {
    public static void main(String[] args) {
        IService proxy = new Proxy();

        System.out.println(proxy.runSomething());
    }
}
  • 프록시는 실제 Service와 같은 이름의 메서드를 구현한다. - 인터페이스 사용
  • 프록시는 실제 Service에 대한 참조 변수를 갖는다.
  • 프록시는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다.
  • 프록시는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수도 있다.

프록시는 Service를 대신할 뿐 그 기능에 자신이 관여하지 않습니다.

따라서 프록시"제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴" 입니다.

0개의 댓글