Actionscript 3.0 에서 Singleton 수정 편 실현

3169 단어 ActionscriptSingleton
앞의 블 로그 에서 코드 는 다음 과 같 습 니 다

package Src
{
/**
* Written by Leezhm, 10th February, 2009
* Contact : [email protected]
*
* An example of singleton class
**/
public class CSingleton
{
// variable
private static var _instance = new CSingleton();
protected function CSingleton()
{
}
public static function getInstance():CSingleton
{
if (undefined != CSingleton._instance)
{
return CSingleton._instance;
}
else
{
throw Error("Could not create the instace!");
}
}
}
}
Rebuild 에 1153:A constructor can only be declared public 가 나타 납 니 다.오류 원인 은 오류 설명 문 에 명확 하 게 설명 되 어 있 습 니 다.즉,Constructor 는 Actionscript 에서 Public 로 만 설명 할 수 있 습 니 다.그리고 저 는 그 당시 에 글 을 쓸 때 습관 적 인 실 수 를 했 습 니 다.제 가 배 운 C++와 C\#에 singleton pattern 을 쓸 때 항상 constructor 를 proctected 또는 private 라 고 밝 혔 기 때문에'당연 하 다'고 이렇게 썼 습 니 다.(모든 프로 그래 밍 언어의 기반 을 잘 중시 해 야 합 니 다.모두 표준 적 인 OO 언어 이지 만 각자 의 특색 이 있어 야 합 니 다.그렇지 않 으 면 흡인력 이 없다.그렇다면 우 리 는 사용자 가 new 로 singleton class 대상 을 만 들 지 않 아 도 된다 는 것 을 보장 할 수 없습니다.제 생각 에 QQ 군 에 있 는 한 네티즌 과 토론 을 했 습 니 다.그 는 저 에 게 해결 방안 을 추천 해 주 었 습 니 다.다음 과 같 습 니 다

Public function CSingleton()
{
Throw Error("error!");
}
그러나 나중에 자신의 테스트 를 통 해 이렇게 하면 안 된다 는 것 을 알 게 되 었 습 니 다.Actionscript 의 이상 체 제 는 C\#C+와 다른 것 같 지만 사실은 대상 을 만 들 었 습 니 다.Exception 을 던 졌 더 라 도(물론 저 는 깊이 있 는 테스트 를 하지 않 았 습 니 다.결과 가 정확 하지 않 을 수도 있 지만 Actionscript 에서 singleton pattern 을 실현 하 는 다른 방법 을 추천 하 겠 습 니 다).나중에 인터넷 에서 좋 은 책 인'Advanced Actionscript 3 with Design Pattern'을 찾 았 고,파 트 III 의 Chapter 4 에서 Actionscript 에서 singleton 에 대한 토론 을 찾 았 다.우 리 는 constructor 를 private 로 설명 할 수 없 기 때문에 constructor 에 private variable 을 전달 할 수 있 습 니 다.마찬가지 로 new 의 목적 을 달성 할 수 없습니다.그러나 어떻게 해야만 singleton class 에 만 private 역할 도 메 인 을 가 진 variable 을 만 들 수 있 습 니까?우 리 는 Actionscript 의 일부 규칙 에 주의해 야 합 니 다.예 를 들 어 AS 파일 에 하나의 Package 만 있 고 AS 파일 과 같은 이름 의 Main Class 만 있 을 수 있 습 니 다.그러나 저 희 는 AS 파일 의 가방 밖에서 클 라 스 를 설명 합 니 다.그리고 이러한 클 라 스 는 package 의 클 라 스 만 역할 영역 이 있 고 가방 밖 에는 보이 지 않 습 니 다.그래서 아래 와 같이 Singleton class:

package Src
{

/**
* Written by Leezhm, 14th February, 2009
* Contact : [email protected]
*
* An example of singleton class
**/

public class CSingleton
{
// variable
private static var _instance = new CSingleton(new SingletonEnforcer());

public function CSingleton(enforcer:SingletonEnforcer)
{
}

public static function getInstance():CSingleton
{
if (undefined != CSingleton._instance)
{
return CSingleton._instance;
}
else
{
throw Error("Could not create the instace!");
}
}

}
}

class SingletonEnforcer {}
BTW:그리고 Actionscript 3 중의 Singleton Pattern Class 에 대한 설명 사진 을 동봉 합 니 다.다음 과 같 습 니 다Actionscript 3 Singleton Pattern Class

좋은 웹페이지 즐겨찾기