単品モードThe Singleton Pattern
2354 ワード
単品モード:クラスにインスタンスが1つしかないことを確認し、グローバル・アクセス・ポイントを提供します.(「Head First Design Patterns」より抜粋)
単品モードは比較的簡単で、以下に単品クラスを示します.
このクラスはインスタンス化できず、Instanceでしかアクセスできません.いつでもこのインスタンスにアクセスし、グローバル一意性を確保します.一意のインスタンスは明後日インスタンス化されるため、マルチスレッドでエラーが発生する可能性があります.単一のインスタンスで直接インスタンス化できます.
同期することもできます.
単品モードは比較的簡単で、以下に単品クラスを示します.
public class Singleton
{
#region = Instance =
private static Singleton _instance;
public static Singleton Instance
{
get {
if (_instance == null)
{
_instance = new Singleton();
}
return _instance; }
}
#endregion
private Singleton() { }
}
このクラスはインスタンス化できず、Instanceでしかアクセスできません.いつでもこのインスタンスにアクセスし、グローバル一意性を確保します.一意のインスタンスは明後日インスタンス化されるため、マルチスレッドでエラーが発生する可能性があります.単一のインスタンスで直接インスタンス化できます.
public class Singleton2
{
#region = Instance =
private static Singleton2 _instance = new Singleton2();
public static Singleton2 Instance
{
get { return _instance; }
}
#endregion
private Singleton2() { }
}
同期することもできます.
public class SingletonForThreads
{
private volatile static SingletonForThreads _instance;
public static SingletonForThreads Instance
{
get {
if (_instance == null)
{
lock (SingletonForThreads._instance)
{
if (_instance == null)
{
_instance = new SingletonForThreads();
}
}
}
return _instance;
}
}
private SingletonForThreads() { }
}
は、参照のために簡単な3つの小さな例を与える.