디자인 패턴

디자인패턴 : Proxy

정채윤 2011. 8. 3. 21:04

프록시 디자인패턴

 - 다른 객체에 대한 접근을 제어하기 위한 대리자 또는 자리채움자 역할을 하는 객체.

 클래스 설정

 프록시 패턴을 사용해야 하는 이유는 "왜 객체에 대한 접근을 제어해야하는가?" 라는 물음에서 시작된다. 그 한 가지 이유는 실제 그 객체를 사용할 수 있을 때까지 객체 생성과 초기화에 들어가는 비용 및 시간을 들이지 않겠다는 것이다. 많은 이미지를 불러와야하는 상황에서 우리에게 보여주는 이미지는 한개뿐이기 때문에 모든 이미지를 다 읽어올 필요는 없다. 또한 이미지 참조자가 이미 채워져 있다면, 불러들인 이미지의 복사본만 반환해주므로써 자원을 효율적으로 사용할 수 있다.

 클래스 사용방법

 var image1: String = new ProxyImage("photo1");
 var image2: String = new ProxyImage("photo2"); 

image1.displayImage(); 
image2.displayImage();

클래스 구성
  

//프록시 인터페이스
package
{
     public interface Image
     {
          function displayImage(): void;
     }
}

//실제이미지 클래스
package
{
     public class RealImage implements Image
     {
          private var _filename: String; 

          public function RealImage(filename: String )
          {
               _filename = filename;
               loadImage();
          }
          private function loadImage(): void
          {
               trace("loading" + _filename );
          }
          public function displayImage(): void
          {
               trace("Displaying" + _filename );
          }
     }
}

//프록시이미지  클래스
package
{
     public class ProxyImage implements Image
     {
          private var _filename: String;
          private var _image: Image; 

          public function ProxyImage( filename: String )
          {
               _filename = filename;
          }
          public function displayImage()
          {
               if( _image == null ) {
                    _image = new RealImage( _filename);
               }

               image.displayImage();
          }
     }
}