在 .NET 中,为什么 ObjectCache 比 MemoryCache 更受欢迎?
In .NET, why is ObjectCache the preferred type over MemoryCache?
many examples of using the memory cache in .NET (including the official docs) 实例化:
private readonly ObjectCache memoryCache = MemoryCache.Default;
有什么理由更喜欢这个:
private readonly MemoryCache memoryCache = MemoryCache.Default;
它类似于声明一个变量或接收一个类型为 Stream
的参数,而不是 FileStream
或 MemoryStream
:灵活性,不必关心你有哪个实现。
ObjectCache
是 MemoryCache
的基础 class。在实例化时,您正在创建一个特定的实现,但在您的代码的其他地方,您拥有哪个实现并不重要。重要的是基础 class 提供的通用接口。您可以更改实例化以创建不同的类型,并且不必修改使用缓存的代码。
ObjectCache 是一个抽象的 class,因此您不能直接实例化它并演示您应该如何构建一个遵循编写 ObjectCache 的人希望您遵守的规则的缓存。
所以MemoryCache继承自ObjectCache。对于日常使用,您会使用 MemoryCashe。但是如果你想要你自己的,你可以从 objectCashe 继承并编写你自己的方法。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
比 MemoryCache
更喜欢 ObjectCache
的原因是 SOLID 中的 L...
里氏替换原则:
Objects in a program should be replaceable with instances of their
subtypes without altering the correctness of that program.
ObjectCache
可以被它的任何子类型替换,包括 MemoryCache
而 MemoryCache
不能被任何迫使你进入特定实现的东西替换。
private readonly ObjectCache memoryCache = MemoryCache.Default;
有什么理由更喜欢这个:
private readonly MemoryCache memoryCache = MemoryCache.Default;
它类似于声明一个变量或接收一个类型为 Stream
的参数,而不是 FileStream
或 MemoryStream
:灵活性,不必关心你有哪个实现。
ObjectCache
是 MemoryCache
的基础 class。在实例化时,您正在创建一个特定的实现,但在您的代码的其他地方,您拥有哪个实现并不重要。重要的是基础 class 提供的通用接口。您可以更改实例化以创建不同的类型,并且不必修改使用缓存的代码。
ObjectCache 是一个抽象的 class,因此您不能直接实例化它并演示您应该如何构建一个遵循编写 ObjectCache 的人希望您遵守的规则的缓存。
所以MemoryCache继承自ObjectCache。对于日常使用,您会使用 MemoryCashe。但是如果你想要你自己的,你可以从 objectCashe 继承并编写你自己的方法。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
比 MemoryCache
更喜欢 ObjectCache
的原因是 SOLID 中的 L...
里氏替换原则:
Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
ObjectCache
可以被它的任何子类型替换,包括 MemoryCache
而 MemoryCache
不能被任何迫使你进入特定实现的东西替换。