デザインパターンを覚えたい (Singleton)

Singletonパターン

常に存在するインスタンスを一つに絞るためのパターン。個人的に思いつく特徴は。

  1. 存在するインスタンス数をせい制限することでメモリにやさしい
  2. インスタンス作成コストの削減
  3. クラスの提供側でインスタンスを管理できる

とかかな。なんかよくわからないけどシングルトンの本質とは違う気がしてならない。上2つの特徴はキャッシュの話だし、3番目が重要そう。要するに予期せぬインスタンス作成の抑止。

実装します。C++でサクッと書いた。(結局一番馴染みのあるC++に落ち着いちゃってますな)
http://dl.dropbox.com/u/7810000/code/design_pattern/singleton.zip
ビルドは例の如くomakeで、今回は"omake all"でテスト実行までやってくれます。

$ cd singleton
$ omake all
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.00 sec)
- build . <test>
+ /Users/xxx/project/design_pattern/singleton/singleton_test
Singleton : create new instance
Singleton : call constructor
Singleton : reuse instance
inst1 and inst2 is same instance!!!
*** omake: done (0.31 sec, 0/1 scans, 3/3 rules, 2/57 digests)

中身は単純にSingletonのインスタンスを2つ取得してきて、ポインタの比較をしてるだけ。2回目のgetInstanceで"reuse instance"となってるのがポイント。