我们有一个应用程序,在哪里访问配置文件,我们有一个单例类,并使用它的对象。
我理解单例类很好,只提供一个对象实例。 我的问题是为什么我们不能在需要时打开和关闭配置文件。
当然,这种方法可能很昂贵,因为Windows需要分配一个句柄并在不使用时将其丢弃。
使用singleton类是否有任何特定原因。
谢谢你, 戒日
答案 0 :(得分:1)
Singleton类可以是纯粹的邪恶。通常是。如果你决定在你的代码中应用松散耦合,你会看到它。
我的建议是重新考虑你的设计。考虑在应用程序启动时读取配置文件,并在内存中保存带有配置参数的对象。然后,您可以将对象传递给需要配置参数的类/接口。
您也可以在不使用单例(反)模式的情况下重新设计应用程序,不需要多次写入配置文件。
答案 1 :(得分:0)
我会以某种方式回答你的问题:) 为什么要使用单件类。首先要注意的是,单例类可能是软件开发中最常用的设计模式。但它有它的优点,在你的情况下我认为它是可用的。如果您的应用程序广泛使用配置文件,通常最好将其设置为Singleton。到处传递配置文件对象会很痛苦。这也是任何与“松散耦合”或TDD争论的人的答案。因为如果您的应用程序在逻辑上与配置文件耦合,您只需使用它并使用配置文件进行测试。最重要的是,您的Singleton可以为测试返回不同的(模拟)实例,从而为您提供良好的封装。
为什么我们不能在需要时打开和关闭配置文件。那么你可以使用单例。单例模式对OO设计施加限制(对象的1个实例)。它只是意味着程序员能够在代码中的任何地方调用类似于:ConfigSingleton.Instance.GetDefaultFontColor();该对象的内部工作方式是完全封装的。如果您愿意,每次程序员调用GetDefaultFontColor时都可以打开文件。或者您可以在某种事件(文件更改)上重新读取配置文件并将其存储在您的内存中。
改写最后一段:“你使用单例模式的事实并没有说明你如何以及何时开启,阅读,关闭,写入你的配置文件。