Различия
Показаны различия между двумя версиями страницы.
— | singleton [2021/07/31 21:58] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Шаблон Синглетон (Singleton pattern) ====== | ||
+ | * [[wpru> | ||
+ | * [[out> | ||
+ | * [[shablony_proektirovanija]] | ||
+ | Одним из применений статических членов является конструкция под названием Singleton pattern. Данная конструкция позволяет создавать только один экземпляр класса, | ||
+ | |||
+ | Иногда бывает очень важно, чтобы класс мог создать только один экземпляр (объект). Например, | ||
+ | |||
+ | Лучшим решением будет класс, который сам отслеживает создание экземпляров и доступ к единственному объекту. Мы можем сделать так, чтобы класс гарантировал, | ||
+ | |||
+ | Надо написать класс, у которого можно создать только один экземпляр, | ||
+ | ====== Singleton и С++ ====== | ||
+ | [[zametki_po_jazyku_c]]: | ||
+ | <file cpp> | ||
+ | # include < | ||
+ | using namespace std; | ||
+ | |||
+ | class Singleton{ | ||
+ | |||
+ | private: | ||
+ | |||
+ | // указатель на единственный экземпляр класса | ||
+ | static Singleton*s; | ||
+ | int k; | ||
+ | |||
+ | // | ||
+ | Singleton(int i){ | ||
+ | k = i; | ||
+ | } | ||
+ | |||
+ | public: | ||
+ | // | ||
+ | // | ||
+ | static Singleton*getReference(){ | ||
+ | | ||
+ | } | ||
+ | |||
+ | // | ||
+ | int getValue(){ | ||
+ | return k; | ||
+ | } | ||
+ | |||
+ | // | ||
+ | void setValue(int i){ | ||
+ | k = i; | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | // Инициализация статического члена класса. | ||
+ | Singleton* Singleton:: | ||
+ | |||
+ | void main(){ | ||
+ | |||
+ | // | ||
+ | // | ||
+ | Singleton*p=Singleton:: | ||
+ | |||
+ | // | ||
+ | cout<< | ||
+ | p-> | ||
+ | cout<< | ||
+ | } | ||
+ | </ | ||
+ | Комментарии к примеру. | ||
+ | * Класс Singleton окончательный — его нельзя расширить. | ||
+ | * Его конструктор закрытый — никакой метод не может создать экземпляр этого класса. | ||
+ | * Единственный экземпляр s класса Singleton — статический, | ||
+ | * Однако можно получить указатель на этот экземпляр методом getReference(), | ||
+ | |||
+ | Безусловно, | ||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга