我有一个应用程序,其中包含用户在运行应用程序之前可以选择的设置。设置存储在数据库中。整个应用程序使用这些设置。现在,每个使用这些设置的类都会在其构造函数中调用数据库,以将设置加载到类中。这对我来说似乎很奇怪,因为设置不应该在运行应用程序的过程中发生变化。那么,你如何调用你的应用程序设置?你是使用静态类还是单例模式而不是每次都调用数据库来调用相同的设置?
答案 0 :(得分:5)
是的,我通常会在静态Application类中抛出这种东西,特别是如果没有理由多次查询的话。
答案 1 :(得分:2)
您的课程取决于设置。因此,您可能需要考虑Dependency Injection将它们与存储方式分离,并提高类的可测试性。
如果使用依赖注入框架(Castle Windsor,NInject等),这会更容易。
为避免重新查询数据库,您将创建一个具有Singleton生存期的Settings对象。避免像瘟疫一样的静态单身。它们使您的应用程序本身不可测试。请参阅Static Singletons - The Anti-Pattern。
答案 2 :(得分:1)
我会选择Singleton,这实际上只是对Jarrett答案进行更有控制的修改。选择适合您设计的产品。
忽略所有关于辛格尔顿的坏消息。绝对任何构造都可以被滥用,只要明智地使用它。
HTH
答案 3 :(得分:1)
正如你所说,将这种责任放在拥有该应用程序数据的单例类上是很常见的。
另一种选择是使用VS2005 / 2008/2010中项目属性的“设置”选项卡。 (右键单击项目名称,然后单击“设置”选项卡并创建设置文件。) 有关“设置页面”的更多信息: http://msdn.microsoft.com/en-us/library/cftf714c(VS.90).aspx
您可以在应用程序启动时自动修改设置页面(从数据库),然后从应用程序的任何位置读取值。
有关ConfigurationManager Class
的更多信息,请参阅此帖子
http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx