以下の内容はhttps://r9.hateblo.jp/entry/20100315/p1より取得しました。


Singleton

Catalystの勉強絡みでDBIx::Class::Schema::Loaderについて、いろいろしていたら、「シングルトン」という単語に行き当たった。
これまでも見たことはあったけど、後回しにしていて、意味が分からなかったのでようやく調べた。
参考:
Singleton パターン - WikipediaƒTƒ‹‚Å‚à‚í‚©‚é ‹tˆø‚«ƒfƒUƒCƒ“ƒpƒ^[ƒ“@‘æ2Í ‹tˆø‚«ƒJƒ^ƒƒO@ƒƒWƒbƒN•ҁ@SingletoniƒVƒ“ƒOƒ‹ƒgƒ“j

要するにクラスから作ることができるインスタンスは一個だけ、グローバル変数的、あるいは、一個だけのキャッシュという感じのデザインパターンのようだ。
そう、デザパタ
でこれまたどっかで見たことあるな、とデザインパターンで引っかかったのだけれど、例のごとくというか、「モダンPerl入門」だった。
理解できなくても頭の隅に残っていて、理解の一端になったと喜ぶべきなのか、それくらい一般常識なんだから覚えておけよ自分、みたいに悲しむべきなのか…。
まあ次に活かせればそれでよいか。

package MySingleton;
my $SINGLETON;
sub new {
  if ($SINGLETON) {
    return $SINGLETON;
  }
  else {
    my $class = shift;
    $SINGLETON = bless { @_ }, $class;
    return $SINGLETON;
  }
}

一度作ったインスタンスはクラス変数として保持、再度コンストラクタが起動されたら、そのクラス変数に保持したインスタンスを返却する。


Moose使ってるなら、MooseX::Singletonをuseするだけ。簡単。




以上の内容はhttps://r9.hateblo.jp/entry/20100315/p1より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14