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