2012-07-28 4 views
0

나는 "Flex 모듈에서 싱글 톤에주의하십시오" http://www.devahead.com/blog/2010/03/beware-of-singleton-in-flex-modules/ 그리고 많은 정보가 다른 내용의 다른 모듈을 알려주지 만, 제 경우에는 작동하지 않습니다! 다른 모듈이 같은 정적 객체를 사용하는 이유는 무엇입니까? 모듈 넓은 싱글 톤을 사용하려고하지만 응용 프로그램 넓은 싱글 톤처럼 작동합니다. 누군가 모듈 단독 싱글 톤을 만드는 방법을 알려줄 수 있습니까? 나는 당신의 문제는 모듈에로드 된 상황과 관련이 생각Flex에서 동일한 싱글 톤을 만드는 다른 모듈에서 다른 싱글 톤을 얻는 방법은 무엇입니까?

<s:Application> 
    <s:ModuleLoader id="A" creationComplete="loadAModule()"/>  
    <s:ModuleLoader id="B" creationComplete="loadBModule()"/>  

    </s:Application> 

    //-----------AModule 
    <s:Module> 
     var aITx:ITx=Tx.newInstant();//Tx extend ITX 
     tracc(aITx.instantId); 
     ... 
    </s:Module> 

    //-----------BModule 
    <s:Module> 
     var aITx:ITx=Tx.getInstance();//Tx extend ITX 
     tracc(aITx.instanceID); 
     ... 
    </s:Module> 


    //-----singleton class 
     public class Tx extends EventDispatcher implements ITx 
     { 
      public function Tx() 
      { 
       // Add listeners 
       addEventListeners(); 
      } 
      private static var instance:Tx; 
      public static function getInstance():Tx 
      { 
       if (!instance) 
       { 
        instance = new Tx(); 
        // Generate a random instance ID 
        instance._instanceID = Math.round(Math.random() * 100); 
        trace("create new itx id="+instance.instanceID); 
       }else{ 
        trace("use old itx id="+instance.instanceID); 
       } 

       return instance; 
      } 
      protected var _instanceID: Number = NaN; 

      public function get instanceID(): Number 
      { 
       return _instanceID; 
      } 

     } 

답변

0

귀하의 경우에는 내가 당신의 모든 모듈이 같은 컨텍스트에로드 같아요처럼 짧은 코드입니다.. 하나의 맥락에서 한 가지 버전의 버전은 하나뿐입니다. 따라서 싱글 톤의 인스턴스는 하나뿐입니다. 별도의 클래스를 원할 경우 각 모듈을 자체 컨텍스트에로드해야합니다. 문맥 정보를 아주 잘 설명하는 링크를 살펴보십시오. http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_33.html

+0

감사합니다. 나는 당신이 옳다고 생각합니다. 하지만 싱글 톤을 사용하고 모든 것을 다시 작성하는 것을 포기했습니다. 이제 모든 것은 괜찮습니다. – user1559053

관련 문제