guy*_*uyl 6 c# singleton caching
我最近读到单身是一种反模式,除非真的需要,否则不应该使用.
在我们的所有项目中,我们使用单例模式来保存一些缓存数据,例如:
class SomeClass
{
public SomeClass()
{
var somedata = Singleton.Instance.GetSomeData(stringRepresintation); // or like that
var someData = Singleton.Instance.SomeData;
}
}
Run Code Online (Sandbox Code Playgroud)
保存该数据的建议设计是什么(静态类或其他)?
好吧,您可以将缓存视为依赖项 - 并将实例(可能是同一实例)传递到需要它的所有内容中.这就是我在已经使用依赖注入的情况下所做的事情.
这样可以更容易地测试那些需要缓存的类 - 您可以为每个测试创建一个新的缓存,而不必担心清除现有的缓存.您还可以并行化测试,而不必担心两个测试会混淆彼此的缓存.此外,它使缓存依赖性更加清晰.
(无论您使用的接口来表示缓存为cdhowie顾名思义就是给你,你不有到,尽管这从它们的依赖脱钩类更多,如果你做到了.如果你的缓存是很简单的,你不要不介意在测试中使用生产实现,可能不值得提取接口.)