- 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공 하는 패턴.
종류
- Remote Proxy: 원격 객체에 대한 접근 제어.
- Virtual Proxy: 생성하기 힘든 자원에 대한 접근.
- Protected Proxy: 접근 권한이 필요한 자원에 대한 접근.
아래 예제로 보는 장점
- 명령 코드 대신 함수 호출 사용.
- 잘못된 명령 코드를 사용하지 않게 된다.
- Client는 IPC(Intel-Process Communication)에 대해서 알 필요가 없다.
- 보안의 기능을 추가하거나, 자주 사용되는 요청에 대한 Cache를 추가 할 수도 있다.
// Proxy
class Calc
{
int server;
public:
Calc() { server = find_server("CalcService"); }
// send server 1: add, 2: sub
int Add(int a, int b) { return send_server(server, 1, a, b); }
int Sub(int a, int b) { return send_server(server, 2, a, b); }
}
int main()
{
Calc* calc = new Calc;
}