Singleton作为访问数据库

时间:2015-06-12 12:33:41

标签: c# asp.net design-patterns

我正在编写一个实现不同设计模式的.NET应用程序。 我有一个想法写单例+飞行模式的例子。 让我们想象一下,我有Pizzas& amp;的远程数据库。配料。我的想法是: 在应用程序开始我会下载所有比萨饼和成分,并保持他们在flyweight模式类。多亏了这个,我希望能节省一些内存。

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

现在我只需要在不询问数据的情况下将订单插入数据库。

请告诉我这是对单身人士的解释吗?轻量级是合理的。

1 个答案:

答案 0 :(得分:2)

Flyweight是指你有许多不同类型的东西。

Singleton就是你有一件事。

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

相比之下,您可以使用单身来表示地球,只能有一个地球类的对象。

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

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