我发现在C#中你可以实现一个Singleton类,如下所示:
class Singleton
{
private static Singleton _instance;
public static Singleton Instance
{
get { return _instance ?? (_instance = new Singleton()); }
}
protected Singleton() { }
}
Run Code Online (Sandbox Code Playgroud)
适用于类型实例Singleton,即:
var a = Singleton.Instance;
var b = Singleton.Instance;
Console.WriteLine(ReferenceEquals(a, b)); //Prints True.
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要Singleton的派生类也遵循Singleton模式,即:
class A:Singleton
{ ... }
A a = A.Instance;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,静态成员Instance由Singleton类访问并创建一个Singleton不是目标的实例.此外,此解决方案还存在两个主要问题:
Singleton则派生类将引用较少派生的实例我的问题是:是否有另一种方法在C#中实现Singleton类,确保派生类也是单例?
众所周知,当我们使用Python等动态语言时,我们不必担心类型.因为动态类型让我们无需担心.即便如此,我们也可以使用函数知道变量的类型type()(在Python中).所以我的问题是:用动态语言进行类型检查有什么好处?