出社前の午前中にちょっとエンタープライズソリューションパターンを軽く読んでたんやけど、ようやくC#でのシングルトン実装についてしっかりと記述している書籍に出会ったと何故かほっとしてしまった。
シングルトンの説明を今更する気はないけど、まぁようするにGOFのデザインパターンのひとつで、唯一のオブジェクトって奴ね。
例えばJavaやC++な人の実装や、C#デザインパターン本では
private SampleClass _instance = new SampleClass(); public SampleClass GetInstance() { if( this._instance == null ) this._instance = new SampleClass();return this._instance;
}
と記述されていることが多く、GOF本でもこう書かれている。
ただC#の場合はC#用に最適化されたシングルトン実装が存在することは、ちょっとC#に詳しい人なら誰でも知っているだろう。
private static readonly SampleClass _instance = new SampleClass(); public static SampleClass Instance { get{ this._instance; } }
まぁ見れば直ぐに分かると思いますが、静的インスタンスにして唯一のオブジェクトを保証し、実行時評価のreadonlyをつけることで遅延インスタンスをサポートするという優れものですね。
まぁエンタ本に書いてある通り、インスタンス化の制御が出来ませんが、別に普通に使う分には問題ないでしょう。
外部から直接フィールドにアクセスしてはいけない!というオブジェクト指向原理主義を考慮しなければ、シングルトンフィールドをpublicにすることでプロパティの記述も不要ですね。
まぁ別にここでデザパタの講釈をしようってんじゃなくて、エンタ本がこういったところを丁寧に解説してたのがちょっとうれしかったということなんだな。
まぁMSDNマガジンではさりげなく、この辺の解説をやってたんですけどね(^^;
追記
にしてもMTでpreタグ使ってソースを表示させるとと変な表示になるなぁ・・なんとか綺麗に表示できないだろうか・・どなたか知ってたらおせ〜てm(_ _)m