单例应该是可继承的还是不应该继承的?
根据 Gof 的说法,“当唯一的实例应该可以通过子类化进行扩展时,并且客户端 应该能够使用扩展实例而不修改其代码。”
但是为什么我会在 MSDN 上看到密封和私有(private)构造函数示例
最佳答案
在我的项目中,我使用 Mark Seemann 的《.NET 中的依赖注入(inject)》一书中的环境上下文实现。使用该模式的要点是,当您请求 Current 实例时,必须有一些东西,并且 Context 可以通过其他实现进行切换。 F.E.
public class TimeContext
{
private static TimeContext _instance;
public static TimeContext Current
{
get
{
if (_instance == null)
{
_instance = new DefaultContext();
}
return _instance;
}
set
{
if (value != null)
{
_instance = value;
}
}
}
public abstract DateTime GetDateTime();
}
上下文的具体实现应该是这样的:
public class DefaultContext : TimeContext
{
public DateTime GetDateTime()
{
return DateTime.Now();
}
}
关于c# - Singleton 应该是可继承的还是不可继承的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100523/