獨體 (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實體存在,傳回實體
左轉