单例实现有什么问题
What wrong with that singleton implementation
我写了静态单例,在单例class里面加了class。
然而,它似乎打破了模式。
有什么建议吗?
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public int MyProperty { get; set; } = 10;
static Singleton() { }
private Singleton() { }
public static Singleton Instance {get { return instance; } }
public class SecondSingleton
{
public Singleton secondInstance;
public SecondSingleton()
{
secondInstance = new Singleton();
secondInstance.MyProperty = 20;
}
}
}
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.Instance;
Singleton.SecondSingleton s2 = new Singleton.SecondSingleton();
Console.WriteLine($"s1.MyProperty = {s1.MyProperty}");
Console.WriteLine($"s2.MyProperty = {s2.secondInstance.MyProperty}");
Console.ReadLine();
}
}
您正在 SecondSingleton
构造函数中创建新的 Singleton
,这意味着 secondInstance != Singleton.Instance
。相反,您应该得到 Instance
,即:secondInstance = Singleton.Instance;
Asper WIKI:Singleton 将 class 的实例化限制为一个“single”实例。当只需要一个对象来协调整个系统的动作时,这很有用。
你一说"SecondInstance",就打破了格局。
我写了静态单例,在单例class里面加了class。 然而,它似乎打破了模式。
有什么建议吗?
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
public int MyProperty { get; set; } = 10;
static Singleton() { }
private Singleton() { }
public static Singleton Instance {get { return instance; } }
public class SecondSingleton
{
public Singleton secondInstance;
public SecondSingleton()
{
secondInstance = new Singleton();
secondInstance.MyProperty = 20;
}
}
}
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.Instance;
Singleton.SecondSingleton s2 = new Singleton.SecondSingleton();
Console.WriteLine($"s1.MyProperty = {s1.MyProperty}");
Console.WriteLine($"s2.MyProperty = {s2.secondInstance.MyProperty}");
Console.ReadLine();
}
}
您正在 SecondSingleton
构造函数中创建新的 Singleton
,这意味着 secondInstance != Singleton.Instance
。相反,您应该得到 Instance
,即:secondInstance = Singleton.Instance;
Asper WIKI:Singleton 将 class 的实例化限制为一个“single”实例。当只需要一个对象来协调整个系统的动作时,这很有用。
你一说"SecondInstance",就打破了格局。