Подтвердить что ты не робот

Где именно шаблон Singleton используется в реальном приложении?

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

  • Доступ к оборудованию
  • Соединения с базой данных
  • Конфигурационные файлы

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Singleton Pattern можно использовать для загрузки конфигурации, скажем, в веб-приложении, мы должны сгенерировать файл, который должен храниться где-то на сервере. Теперь это местоположение может быть извлечено из файла конфигурации (файла свойств) с использованием одноэлементного класса. Поскольку местоположение должно быть уникальным и может часто меняться в будущем, поэтому мы используем файл конфигурации, который может быть изменен без развертывания приложения, так что для отражения изменений и местоположения будет глобальным и уникальным с помощью приложения

Ответ 6

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

Ответ 7

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

Ответ 8

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

Надеюсь, это поможет вам, привет!!!!

Ответ 9

Шаблон Singleton обычно полезен, когда объект, который создается один раз и совместно используется через разные потоки/приложения. Рассмотрим случай, когда вы реализуете класс загрузки свойств для принтера.

Теперь принтеры могут иметь различные свойства. Например: - Mono Printer, Цветной принтер, Автоматический принтер поддержки сканера и т.д.

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

Значение поддерживаемых функций сохраняется в форме таблицы config, например say 1 if и поддерживается 0, если не поддерживается.

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

Значения файлов изменились бы/были бы прочитаны только в следующих сценариях: - 1. В Boot. 2. о добавлении или удалении любого нового периферийного оборудования.

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

Это один из примеров, я могу придумать, где мы можем реализовать шаблон проектирования Singleton.

Ответ 10

Когда вы используете Logger, вы используете шаблон Singleton для класса Logger. В случае, если это не Синглтон, у каждого клиента будет свой собственный объект Logger, и одновременный доступ к экземпляру Logger в среде Multithreaded будет одновременным, а несколько клиентов будут одновременно создавать/записывать в файл журнала, что приводит к повреждению данных.

Ответ 11

рассмотрим ситуацию "Audio_Driver_Service", которая разработана в singleletone pattarn. Таким образом, нам разрешено создавать только один экземпляр класса "Audio_Driver_Service". Теперь на самом деле ваш проигрыватель Windows Media или проигрыватель Youtube оба будут совместно использовать один и тот же объект audio_driver_service, а не создавать новый экземпляр