Перейти к содержимому

Шаблоны проектирования — шаблон «Одиночка» | Объяснение и реализация на языке C++

Mike Shah

0:00 / 0:00

Шаблоны проектирования — шаблон «Одиночка» | Объяснение и реализация на языке C++

15 899 просмотров · 4 года назад
Mike Shah
41,4 тыс. подписчиков
15 899 просмотров · 4 года назад
►Плейлист «Проектирование программного обеспечения и шаблоны проектирования»:    • C++ Software Design and Design Patterns   ►Полные курсы можно найти на сайте: https://courses.mshah.io/ ►Поддержите канал, присоединившись к сообществу:    / @mikeshah   ►Репозиторий Git: https://github.com/MikeShah/DesignPat... ►Описание урока: В этом уроке я покажу, как реализовать порождающий шаблон проектирования в C++, известный как «синглтон». Многие считают этот шаблон спорным из-за возможности его неправильного использования, однако сам по себе он может быть полезен, когда нам действительно нужна только одна точка доступа к определённому классу (например, файловой системе или логгеру). Этот урок также освежит в памяти идею «статичности» — простого способа реализации шаблона Singleton. Полезный ресурс по static: https://en.cppreference.com/w/cpp/lan... 00:00 Шаблоны проектирования несовершенны 00:58 Порождающий шаблон проектирования 2:25 Пример класса Logger 4:10 Создание нескольких экземпляров объекта 5:15 Использование модификаторов доступа класса для конструктора 6:06 Идея функции-члена GetInstance 7:06 Ключевое слово static 7:50 Пример статической функции 10:22 Практический пример использования static в классе 11:00 Инициализация статических переменных-членов 13:30 Статический указатель на экземпляр нашего класса как переменная-член 15:40 Использование функции-члена из нашего единственного экземпляра 16:50 Создание статической функции-члена 17:37 Реализация нашего класса Logger 19:10 Выделение памяти для нашего указателя 20:50 Добавление сообщений в наш logger 22:18 Будьте осторожны с возвратом указателей на переменные-члены 24:20 Проектируйте так, чтобы защитить клиентов вашего API 25:10 Создайте статическую переменную в GetInstance 27:30 Другие вопросы проектирования и закрытие ►Канал на YouTube:    / mikeshah   ►Поставьте лайк и подпишитесь, чтобы помочь каналу! ►Присоединяйтесь к нашему бесплатному сообществу: https://courses.mshah.io/communities/...