private,防止外部實例化與繼承。public class Singleton
{
private static Singleton _instance = null;
private Singleton() { }
public static Singleton GetInstance()
{
if (_instance == null) _instance = new Singleton();
return _instance;
}
}
單例的自然推廣:允許有限數量實例,自行管理並對外提供。
public class Multiton
{
private static Multiton _instance1 = null, _instance2 = null;
private Multiton() { }
public static Multiton GetInstance(int which)
{
if (which == 1)
{
if (_instance1 == null) _instance1 = new Multiton();
return _instance1;
}
else
{
if (_instance2 == null) _instance2 = new Multiton();
return _instance2;
}
}
}
實例數無上限,通常以集合管理所有實例,不保證能退化為單例。