【问题标题】:Singleton as performance upgrade in access to database单例作为访问数据库的性能升级
【发布时间】:2015-06-12 20:49:42
【问题描述】:

我正在编写一个实现不同设计模式的 .NET 应用程序。 我有一个想法写单例+享元模式示例。 假设我有一个包含比萨饼和配料的远程数据库。我的想法是: 在应用程序启动时,我会下载所有比萨饼和配料,并将它们保存在享元模式类中。多亏了这一点,我希望能节省一些内存。

此外:我想实现单例模式,因此无需询问数据库即可访问下载对象。在访问数据库时,这不会节省我的时间吗?

现在我只需将订单插入数据库而不需要数据。

请告诉我这种对单例和享元的解释是否合理。

【问题讨论】:

  • 我知道单例模式不是推荐的模式,但重点是展示它的实现
  • 为什么需要单例?为什么你不能创建一个引用HttpRuntime.Cache 的静态类并将下载的对象存储在那里并有一些从缓存中返回它们的方法?
  • 好点,虽然我的练习是实现一些设计模式,但是,我找不到合理使用单例
  • 这将是缓存模式,您首先必须确保正确处理所有并发。

标签: c# asp.net design-patterns


【解决方案1】:

享元是指你拥有多种不同类型的单一事物。

单身是指你只有一件事情。

例如,您可以使用享元模式来描述国家/地区。一个对象用于加拿大,一个对象用于俄罗斯,等等。它们都是国家,具有相似的属性,但不一定相同。

相比之下,你可以用一个单例来表示地球,地球类只能有一个对象。

至于在启动时加载整个数据库,这似乎是不必要且不好的做法,数据库用于保存您可以检索的信息。如果您将多次使用相同的调用,您应该缓存结果,如果您有一个需要大量文本搜索的庞大数据库,您应该使用基于 lucene 的搜索服务器等。

但是,对于对数据库的简单唯一 SQL 或 LINQ 调用(使用 EF),您应该在需要利用所述调用的结果时调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多