在 .NET 中使用内存缓存的许多 示例(包括官方文档)将其实例化为:
private readonly ObjectCache memoryCache = MemoryCache.Default;
有什么理由更喜欢这个:
private readonly MemoryCache memoryCache = MemoryCache.Default;
在 .NET 中使用内存缓存的许多 示例(包括官方文档)将其实例化为:
private readonly ObjectCache memoryCache = MemoryCache.Default;
有什么理由更喜欢这个:
private readonly MemoryCache memoryCache = MemoryCache.Default;
它类似于声明变量或接收类型参数Stream
而不是FileStream
or MemoryStream
:不必关心您拥有哪种实现的灵活性。
ObjectCache
是 的基类MemoryCache
。在实例化时,您正在创建一个特定的实现,但在代码的其他地方,您拥有哪个实现并不重要。重要的是基类提供的通用接口。您可以更改实例化以创建不同的类型,并且不必修改使用缓存的代码。
偏爱的原因ObjectCache
是MemoryCache
SOLID 中的 L...
Liskov替换原则:
程序中的对象应该可以用其子类型的实例替换,而不会改变该程序的正确性。
ObjectCache
可以被它的任何子类型替换,包括MemoryCache
whileMemoryCache
不能被任何强迫你进入特定实现的东西替换。
ObjectCache 是一个抽象类,因此您不能直接实例化它,并演示如何构建一个符合编写 ObjectCache 的人希望您遵守的规则的缓存。
这样 MemoryCache 继承自 ObjectCache。对于日常使用,您将使用 MemoryCash。但是如果你想拥有你自己的,你可以从 objectCash 继承并编写你自己的方法。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable