【问题标题】:Is this a good candidate for a shared (static) class?这是共享(静态)类的好候选吗?
【发布时间】:2015-02-06 12:18:53
【问题描述】:

我正在创建一个包含Dictionary 的公共实例的缓存 类。该类服务于整个应用程序,只能有一个全局实例,其生命周期与应用程序本身相同。

这个用例是否适合共享(静态)类?我知道对此有主观意见,但如果可能的话,我希望客观的利弊。

【问题讨论】:

    标签: vb.net class oop static


    【解决方案1】:

    是的,但是:

    我绝不会公开公开这些词典。将它们隐藏在方法后面,以便您控制访问。如果应用程序是多线程的,您将需要同步访问,或使用 ConcurrentDictionary。字典本身不是线程安全的。

    如果您打算将其用于缓存,请记住 .NET 中已经有用于缓存的选项。也许您的课程应该只封装其中之一?

    在网络环境中:http://msdn.microsoft.com/en-us/library/system.web.caching.cache(v=vs.110).aspx 在非网络环境中:可能是http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache(v=vs.110).aspx

    【讨论】:

    • 不错的答案。我已经按照您的建议包装了 Dictionary 对象。谢天谢地,不需要多线程。您提到的 .NET 缓存类看起来很棒。但是 MemoryCache 只能从 .NET 4 开始使用,而且我的目标仍然是 3.5 版。
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多