13. 프락시 패턴(Proxy Pattern) – 가상 프락시

13.1 개요

  이번에는 프락시 패턴 중에서 가상 프락시에 대해 살펴보기로 합시다.

가상 프락시는 실제 개체의 특정 행위를 수행하는 비용이 클 경우 사용이 됩니다. 사용자가 가상 프락시 개체를 통해 비용이 많이 드는 작업을 요청을 했을 시에 가상 프락시 개체는 이 작업을 별도의 쓰레드에서 수행하게 명령만 내립니다. 이를 통해 사용자는 비용이 큰 작업을 수행 요청했을 시에 수행이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있게 됩니다.

“비용이 많이 드는 작업을 쓰레드에서 실행하여 대기하지 않게 하는 가상 프락시”

 

13. 2 시나리오

여수 엑스포를 다녀와서 사진 보정 작업을 수행하였습니다. 그리고, 이번에는 사진들을 소셜 사이트에 올려볼까 하는데 사진들의 사이즈가 너무 커서 모두 줄이고 올려야 했습니다. 사진 사이즈를 조절하는 응용이 하나의 사진을 변환 요청을 하면 이 작업이 완료되기 전에는 다른 작업을 할 수가 없었습니다. 이는 너무 많은 시간을 소요하는 지루한 작업이었죠. 다음에도 똑같은 작업을 할 수 있을 것 같아서 간단한 응용을 하나 만들었습니다. 내가 사진을 변환하라고 명령을 하면 도우미 개체가 변환기에게 변환 명령을 내릴 수 있게 만들었습니다. 그리고, 도우미 개체를 통해 지금 변환 중인지 변환이 완료되었는지 알 수 있게 하였습니다. 이를 통해 기존에 찍었던 다른 사진들도 사이즈를 조절하여 소셜 사이트에 올리는 작업을 비교적 수월하게 할 수 있었습니다.


13. 가상 프락시 설계

13. 가상 프락시 구현