Cairngorm的command并不是一直存在,而是触发一次就创建一次command类的实例

注册的每个command类都存放到了一个Dictionary里面,每次需要用到的时候都是实例化了一次。这是cairngorm旧版本里的代码:

private var commands : Dictionary = new Dictionary();

 public function addCommand( commandName : String, commandRef : Class ) : void
      {
         if( commands[ commandName ] != null )
         {
            throw new CairngormError(
               CairngormMessageCodes.COMMAND_ALREADY_REGISTERED, commandName );
         }
         
         commands[ commandName ] = commandRef;
         CairngormEventDispatcher.getInstance().addEventListener( commandName, executeCommand );
      }
      
      protected function executeCommand( event : CairngormEvent ) : void
      {
         var commandToInitialise : Class = getCommand( event.type );
         var commandToExecute : ICommand = new commandToInitialise();

         commandToExecute.execute( event );
      }
      
      /**
       * Returns the command class registered with the command name. 
       */
      protected function getCommand( commandName : String ) : Class
      {
         var command : Class = commands[ commandName ];
         
         if ( command == null )
         {
            throw new CairngormError(
               CairngormMessageCodes.COMMAND_NOT_FOUND, commandName );
         } 
            
         return command;
      }   

posted @ 2011-02-17 10:18  居家懒人  阅读(355)  评论(0编辑  收藏  举报