2010年4月26日 星期一

Singleton Pattern For ActionScript3,AS3 獨體模式

§ 獨體模式
獨體 (singleton)
  • 簡單的說就是讓某類型物件具有唯一性的存在一個程式專案中,即該程式中不能產生兩同類型的實體。
為什麼需要獨體功能呢?我們來用幾個自然界的例子來說明
  • 動物,每一個動物,只能有一個大腦,如果有兩個大腦,不知誰才是真正的管理者。
  • 交通工具,每一單位交通工具,同一時間內只能接受來自一個駕駛者所給予的操作指示,如飛機雖有正副機長,但同時只能有一位機長操作飛機動作行為。


當然不只這情境,還許有多種狀況下須要使用到獨體模式


Example:
package patterms
{
    public class Steering
    {
         private static var _steeringInstance:Steering;
         public function Steering(enforcer:SteeringEnforcer )
        {
            trace("建構子");
        }


        public static function getInstance(id:int):Steering
       {
       //判斷實體是否已經存在
           if(_steeringInstance == null)
           {
               trace( "id" + id + "實體不存在,產生實體" );
               _steeringInstance = new Steering(new SteeringEnforcer( ) );
           }


            trace( "id" + id + "實體存在,傳回實體" );
            return _steeringInstance;
         }


          public function turnRight():void
          {
              trace( "右轉" );
          }


          public function turnLeft():void
         {
             trace( "左轉" );
         }
      }
}
//內隱Class
class SteeringEnforcer
{
}
 
// 程序執行
Steering.getInstance(0);
Steering.getInstance(1).turnLeft();
 
//trace結果
id0實體不存在,產生實體
建構子
id0實體存在,傳回實體
id1實體存在,傳回實體
左轉