wiki的说明 singleton pattern 的实现常见有
lazy instantization 跟 eager instantization
依造设计用意
lazy 在第一次使用时才产生实例
eager 是物件加载时产生
不了解何时是所谓的"物件加载"
实际用以下2个class测试, 环境是 vs 2010 express
public class Singleton_lazy
{
private static Singleton_lazy instance;
public static string str = "lazy public attribute";
private Singleton_lazy()
{
Console.WriteLine("Singleton lazy initialized");
}
public static Singleton_lazy getInstance()
{
if (instance == null)
instance = new Singleton_lazy();
return instance;
}
public static string String()
{
return "lazy public method";
}
}
public class Singleton_Eager
{
private static readonly Singleton_Eager instance = new Singleton_Eager();
public static string str = "eager public attribute";
private Singleton_Eager()
{
Console.WriteLine("Singleton Eager initialized");
}
public static Singleton_Eager getInstance()
{
return instance;
}
public static string String()
{
return "eager public method";
}
}
测试3种情况