본문 바로가기

디자인 패턴

디자인패턴 : Singleton


단일체 디자인패턴

- 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다.

클래스 설명

AS3.0 에서 사용하는 가장효율적인 싱글턴패턴의 구조입니다. AS3.0에서는 new 연산자를 이용해서 인스턴트를 만들 때 생성자의 실행을 막을 방법이 존재하지 않습니다. 2.0에서는 접근제한자를 private로 선언해서 접근을 막을 수 있었지만 3.0에서는 생성자 함수에 private 키워드를 사용할 수 없습니다.그래서 컴파일타임 시 클래스 내부 static변수에 인스턴트를 할당하고 getInstance() 정적메소드를 이용해서 인스턴트를 반환 받으므로써 싱클턴클래스의 유일성을 보장받을 수 있습니다.

클래스 사용예제

var singleton: Singleton = new Singleton(); //일반적인 인스턴트 생성을 막기위함.
var singleton: Singleton = Singleton.getInstance(); //우리가 의도한 싱클턴패턴 사용방법.
singleton.doSomething(); //출력 "hi~ I am doSomething()" 

클래스 구성

package
{
     private static var _instance: Singleton = new Singleton(); //컴파일타임 시 클래스 내부 인스턴트 할당. 

     public function Singleton()
     {
          if(_instance){
               throw new Error("Not make Instance");
          }
     }
     public static function getInstance(): Singleton
     {
          return Singleton._instance;
     }
     public function doSomething(): void
     {
          trace("hi~ I am doSomething()");
     }
}

'디자인 패턴' 카테고리의 다른 글

디자인패턴 : MVC  (0) 2011.08.03
디자인패턴 : Observer  (0) 2011.08.03
디자인패턴 : Command  (0) 2011.08.03
디자인패턴 : Composite  (0) 2011.08.03
디자인패턴 : Iterator  (0) 2011.08.03