Оглавление:
Определение - Что означает Синглтон?
Singleton - это класс, который позволяет создавать только один его экземпляр и предоставляет доступ к этому созданному экземпляру. Он содержит статические переменные, которые могут содержать уникальные и частные экземпляры самого себя. Он используется в сценариях, когда пользователь хочет ограничить создание экземпляра класса только одним объектом. Обычно это полезно, когда для координации действий в системе требуется один объект.
Шаблон Singleton используется в языках программирования, таких как Java и .NET, для определения глобальной переменной. Один объект, используемый в системах, остается постоянным и должен быть определен только один раз, а не много раз.
Техопедия объясняет Синглтон
Синглтон предназначен для предоставления только одного своего экземпляра, одновременно обеспечивая глобальную точку доступа. Реализация одноэлементного шаблона включает в себя создание класса с методом, который создает новый экземпляр класса. Для реализации одноэлементного шаблона должны быть соблюдены принципы единого экземпляра и глобального доступа. Класс Singleton подобен глобальному репозиторию для своего экземпляра, что делает конструктор закрытым. Следовательно, экземпляр вне класса не может быть создан вообще, а одиночный объект может содержать только один экземпляр. Одиночный класс создает себя и поддерживает этот экземпляр в разных системах.
Абстрактные фабричные, конструкторские и прототипные узоры могут использовать синглтоны. Фасадные объекты и статические объекты часто являются одиночными. Для реализации синглтона требуется механизм, с помощью которого можно получить доступ к члену класса без необходимости создания объекта класса и сохранения значения членов класса среди объектов класса. Шаги, вовлеченные в создание синглтона, следующие:
- Конструктор сделан приватным. Это позволяет только классу иметь доступ к синглтону.
- Один внутренний экземпляр класса создается с использованием метода. В этом примере метод называется экземпляром. Метод «instance» используется для инициализации класса для доступа к одному экземпляру. Метод экземпляра помечен как статический в этом примере, чтобы предоставить всем потокам согласованный доступ. За пределами создания экземпляра оператор «lock» используется для управления многопоточным доступом. Это блокирует создание экземпляра в одном потоке.
Пример:
// Ленивое создание единственного внутреннего экземпляраПубличные статические тестовые данные Экземпляр
{
Получить
{
Блокировка (тип (testdata))
{
Если (_instance == ноль)
_instance = testdata ();
}
Вернуть _instance;
}
}
Пример:
класс тестовых данных
{
Частные тестовые данные ()
{
//… нет для синглтона