Синглтон класс - PullRequest
       19

Синглтон класс

0 голосов
/ 23 февраля 2011

У нас есть приложение, в котором для доступа к файлу конфигурации у нас есть одноэлементный класс, и для этого используется объект.

Я понимаю, что синглтон-класс хорош и предоставляет только один экземпляр объекта.Мой вопрос - почему у нас не может быть открытия и закрытия файла конфигурации, когда это требуется.

Конечно, этот метод может быть дорогим, поскольку Windows необходимо выделить дескриптор и утилизировать его, когда он не используется.

Есть ли какая-либо конкретная причина для использования одноэлементного класса.

Спасибо, Харша

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Синглтон-класс может быть чистым злом.Обычно это так.Вы увидите это, если когда-нибудь решите применить слабую связь к своему коду.

Мой совет - пересмотреть ваш дизайн.Подумайте о чтении файла конфигурации при запуске приложения и сохранении объекта с параметрами конфигурации в памяти.Затем вы можете передать объект в классы / интерфейсы, для которых требуются параметры конфигурации.

Вы также можете перепроектировать свое приложение таким образом, чтобы оно не требовало многочисленных записей в файл конфигурации без использования одноэлементного (анти) шаблона.

0 голосов
/ 24 февраля 2011

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

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

Перефразируя последний абзац: «тот факт, что вы используете шаблон синглтона, ничего не говорит о том, как и когда вы: открываете, читаете, закрываете, записываете в свой файл конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...