12. 3 디자인
프락시 패턴 중에 원격지 프락시를 설명하기 위한 예제 프로그램은 서버 측과 클라이언트 측이 필요합니다. 서버 측에서는 실제 개체인 Camera 개체 외에도 소켓 통신에서 클라이언트 연결을 기다리기 위한 ListenServer와 실제 소켓 통신을 수행하여 클라이언트 측 요청에 맞게 Camera를 제어하는 Stub으로 구성할 것입니다. 그리고 클라이언트 측에는 서버 측에 있는 Camera와 같은 방법으로 사용할 수 있게 RemoteController를 제공할 것입니다.
Camera와 RemoteController는 ITake와 실현 관계를 갖게 할 것입니다. ITakce에서는 필요한 기능에 대해 약속하고 Camera와 RemoteController에서는 약속된 기능을 구체적으로 구현합니다. ITake 인터페이스에는 TakeAPicture(사진을 찍다)메서드와 ChangeMode(모드 변환) 메서드, GetMode(모드 확인) 메서드를 약속할게요.