Где точно Шаблон "одиночка" используется в реальном приложении?

Мне было просто любопытно, где точно шаблон "одиночка" используется... Я знаю, как шаблон работает и где он может использоваться, но я лично никогда не использовал ни в каком реальном приложении. Может кто-то давать пример, где он может использоваться.. Я был бы очень признателен за, если кто-то может объяснить, как и где они использовали в реальном приложении. Спасибо, Swati

42
задан Noel M 7 July 2010 в 06:15
поделиться

6 ответов

Обычно синглтоны используются для глобальной конфигурации. Простейшим примером может быть LogManager - есть статический метод LogManager.getLogManager(), и используется один глобальный экземпляр.

На самом деле это не «истинный» синглтон, так как вы можете наследовать свой собственный класс от LogManager и создавать дополнительные экземпляры таким образом, но обычно это используется как синглетон.

Другим примером может быть java.lang.Runtime - из документов:

Каждое Java-приложение имеет один экземпляр класса Runtime, который позволяет приложение для взаимодействия с среда, в которой приложение работает. Текущая среда выполнения может быть получено из метода getRuntime.

Это в значительной степени определение синглтона :)

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

58
ответ дан 26 November 2019 в 23:34
поделиться

Некоторые примеры:

  • Аппаратный доступ
  • Подключения к базе данных
  • Файлы конфигурации
11
ответ дан 26 November 2019 в 23:34
поделиться

Синглтон - хороший шаблон проектирования. Прежде чем выбрать этот паттерн, сначала проведите глубокий анализ вашей проблемы и решения. Если в вашем решении какой-то объект имеет только один экземпляр, и вы хотите смоделировать это в своем проекте, то вам следует использовать паттерн singleton. Например, если вы моделируете компьютер в программе, то может быть только один экземпляр компьютера по отношению к запущенной программе. Как сказал Джон Скит, java.lang.Runtime моделируется как singleton, потому что для всех java-объектов, которые загружаются и запускаются внутри java runtime, существует только один экземпляр runtime.

Опять же, во многих случаях он используется по неправильным причинам. Никогда не создавайте синглтон для того, чтобы вы могли легко получить доступ к объекту (например, Object::instance() ) из любого места без передачи объекта. Это худшее использование, с которым я когда-либо сталкивался.

2
ответ дан 26 November 2019 в 23:34
поделиться

Я использовал одноэлементный шаблон в онлайн-системе магазина Football Team. мы применили шаблон singleton к классу ShoppingCart.

Вам нужен был только один экземпляр корзины для каждого экземпляра приложения. поэтому синглтон казался наиболее подходящим для этой ситуации.

12
ответ дан 26 November 2019 в 23:34
поделиться

Например, запуск пробной версии программного обеспечения с одной лицензией и одним подключением к базе данных, которое использует паттерн singleton в реальном слове. может быть, гуру Джон Скит может предоставить пример вроде этого.

2
ответ дан 26 November 2019 в 23:34
поделиться

Я использовал одноэлементный (на самом деле пара из них) в приложении, которое использовало pureMVC. Мы были недовольны сложностью, которую представила эта структура (стало сложным и многоуровневым отслеживать вызовы методов через уровни mvc). Поэтому мы использовали центральный синглтон в качестве посредника, чтобы лучше отделить слои друг от друга.

0
ответ дан 26 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: