Я отвечу на ваш вопрос как-то задом наперед:)
Зачем использовать синглтон-класс . Первое, на что следует обратить внимание, - это то, что синглтон-класс - это, возможно, самый ошибочный шаблон проектирования в разработке программного обеспечения. Но у этого есть свои преимущества, и в вашем случае я думаю, что это пригодно для использования. Если ваше приложение широко использует конфигурационный файл, обычно рекомендуется сделать его Singleton. Было бы больно передавать объект файла конфигурации везде. Это также ответ любому, кто спорит с «слабой связью» или TDD. Потому что, если ваше приложение логически связано с конфигурационным файлом, вам просто нужно использовать его и протестировать с помощью конфигурационного файла. Вдобавок к этому ваш Singleton может возвращать разные (фиктивные) экземпляры для тестов, что обеспечивает хорошую инкапсуляцию.
Почему у нас не может быть открытия и закрытия файла конфигурации, когда это необходимо. Ну, вы можете с помощью singleton. Синглтон-паттерн накладывает ограничения на ОО-дизайн (1 экземпляр объекта). Это просто означает, что программист может вызывать в любом месте кода что-то вроде: ConfigSingleton.Instance.GetDefaultFontColor (); Внутренняя работа этого объекта полностью заключена в капсулу. Если вам нравится, вы можете открывать файл каждый раз, когда программист вызывает GetDefaultFontColor. Или вы можете перечитать файл конфигурации для какого-либо события (изменение файла) и сохранить его в своей памяти.
Перефразируя последний абзац: «тот факт, что вы используете шаблон синглтона, ничего не говорит о том, как и когда вы: открываете, читаете, закрываете, записываете в свой файл конфигурации.