TOP
PROFILE
MUSIC TUNE
BBS
LINK

2004年10月31日

シングルトン実装

出社前の午前中にちょっとエンタープライズソリューションパターンを軽く読んでたんやけど、ようやく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

Posted by GAMMARAY at 2004年10月31日 14:29 | TrackBack
Comments
HTMLソース見て笑っちゃったよ。すごいソースだ。 p要素の中にpreが出現してるだけじゃなくて、強制改行連発じゃないか。font要素とかもあるし。 MTが編集時にどんな判別をしているのかよく知らないんだけど、たぶんブロック要素を記載するときに空行を空けてないからじゃないかな。wikiの記法みたいに書けば良いんじゃないかと……想像する。 例(編集画面で) 以下、コードです。 ←空行 <pre>hogehoge 〜 Posted by: DDT at 2004年10月31日 15:01
Typepadのココログでテストしてみたけど、やっぱり空行が入っていないからだね。 不要な改行が多い書き方をしていると、そうなりやすいのかな。 Posted by: DDT at 2004年10月31日 15:09
おぉ〜言われた通り空行つけると全てうまくいってしまった・・なるほど、またひとつ利口になったと納得。 どうもでした〜m(_ _)m Posted by: GAMMARAY at 2004年10月31日 15:53
Post a comment









Remember personal info?