シングルトンパターン

デザインパターンの勉強を始めたので、その勉強録です。

まともに今までデザインパターンを勉強したことがなく、なんとなくソース読んで、似たような仕様で書くっていうのを今まで繰り返してました。
インターンの時にシングルトンを全く意味不明なまま使っていて、結局その時理解せずにインターンを終えてしまった苦い思い出が思い出されます。

今回はこの本に沿って、ActionScriptデザインパターンを勉強していきたいと思います。(本当はC++とかでやりたい)
ActionScriptデザインパターンを解説している唯一の本で、丁寧に解説してくれていて理解しやすいと思います。




シングルトンパターン

「クラスのインスタンスを一つしか作らない」ようにするパターンです。
静的なデータとかこういった形で持つ事が多いですかね。

SingletonEnforcerクラス
シングルトンのクラスのみが使用できるSingletonEnforcerクラスをコンストラクタの引数にして、強制的にコンストラクタを外部で呼び出せなくする手法。


package
{
/**
* シングルトンパターンクラス
*
*/
public class SingletonClass
{
// privateでstaticな変数
private static var _instance:SingletonClass;

/**
* constructor
*
*/
public function SingletonClass(enforcer:SingletonEnforcer)
{
}

/**
* インスタンス取得メソッド
* @return SingletonClass
*
*/
public static function getInstance():SingletonClass
{
if (SingletonClass._instance == null)
{
SingletonClass._instance = new SingletonClass(new SingletonEnforcer());
}
return SingletonClass._instance;
}

public function sayHello():void
{
trace('Hello World');
}
}
}
/**
* コンストラクタを強制的に呼び出せなくするため
* 外部からアクセス不可能な空クラスを定義
*
*/
class SingletonEnforcer {}