あわあわエラーログ~わりと技術的~

yachtseaのライフログ・メモ・日記のようなもの

JavaとC#の適切なSingleton

デザインパターンのSingletonを使うときは

JavaC#でそれぞれに適した書き方があるのでメモっとく。

[Javaの場合]
public class MySingleton{
    private static final MySingleton _ms = new MySingleton();
    private MySingleton(){}
    public static MySingleton getInstance(){
        return _ms;
    }
    public void execute(){
        System.out.println("JavaでSingleton!");
    }
}

うむ、典型的なやつだ。

ただ、呼ばれないコンストラクタをprivateとするのはなんだか違和感がある。

そもそも呼ばれないものなのでできれば書きたくはない。

もっと直感的にならんもんか。

…ということでそんな違和感を払拭してくれるのがC#

Javaと同じようにも書けるけどこう書くのがオサレ。

[C#の場合]
public static class MySingleton
{
    public static void Execute()
    {
        Console.WriteLine("C#でSingleton!");
    }
}

C#では静的クラスを宣言することで唯一のインスタンスとなる。

new MySingleton();も当然効かない。

うむ、これはシンプルかつ直感的で良い感じだ。

まあ、Singletonパターンはあまり使わないけどね…。