gpt4 book ai didi

c# - 单例是否应该继承?

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:42 24 4
gpt4 key购买 nike


单例应该是可继承的还是不应该是?

根据 Gof 的说法,“当唯一实例应该可以通过子类化扩展时,客户端应该能够在不修改代码的情况下使用扩展实例。”

但为什么我会在 MSDN 上看到 Sealed 和 Private 构造函数示例

最佳答案

在我的项目中,我使用 Mark Seemanns 一书《.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();
}

context的具体实现应该是这样的:

public class DefaultContext : TimeContext
{
public DateTime GetDateTime()
{
return DateTime.Now();
}

}

关于c# - 单例是否应该继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com