13. 가상 프락시 설계

13. 3 디자인

프락시 패턴 중에 가상 프락시를 설명하기 위한 예제 프로그램은 이미지 변환 프로그램입니다. 프로그램 내부에는 이미지를 설정하고 리셋시키고 변환, 이미지 얻어오기 기능에 대한 약속을 하는 IConvert 와 실제 이미지를 변환하는 ImageConverter, 가상 프락시 개체를 표현한 VirtualConverter가 있습니다.

실제 이미지를 변환하는 ImageConverter 개체의 ConvertImage 메서드를 수행을 명령하면 장시간 동안 변환 작업을 수행을 하기 때문에 사용이 불편할 수 있습니다. 이러한 불편을 해소하기 위해 가상 프락시 개체인 VirtualConverter를 제공하고 있습니다.

가상 프락시 개체인  VirtualConverter 개체와 실제 이미지를 변환하는 ImageConverter는 동일한 인터페이스를 제공하고 있기 때문에 사용자 입장에서는 동일한 방법으로 사용할 수가 있습니다. 반면, 가상 프락시 개체인 VirtualConverter의 ConvertImage 메서드에서는 쓰레드를 생성하는 작업만 수행합니다. 그리고, 쓰레드에서는 실제 개체를 통해 이미지 변환을 수행시킬 것입니다. 이와 같이 가상 프락시를 사용하면 실제 개체와 동일한 방법으로 일관되게 사용할 수 있으며 동시에  많은 시간 동안 수행하는 작업이 완료되기를 기다리지 않고 다른 작업을 수행할 수 있습니다.

[그림]가상 프락시 클래스 다이어그램
[그림]가상 프락시 클래스 다이어그램