Andriy Shyrokoryadov

.Net developer, data scientist

Синглтон. Шаблоны проектирования - видео №6. №46.

Текст к видео "#46 Синглтон" на канале YouTube

Рад приветствовать вас на моём канале. На собеседованиях часто можно встретить вопросы о шаблонах проектирования. Часто вас могут попросить объяснить, как работает один из шаблонов, который вы знаете. Однако это вопрос может быть с оговоркой, чтобы это не был шаблон «Синглтон». Я не знаю из-за чего у технических рекрутеров такая нелюбовь к этому шаблону. Возможно, из-за того, что некоторым он кажется простым. Или из-за того, что некоторые думают, что данный шаблон можно просто заменить статическими классами. Сложно сказать. Я из-за своего опыта могут сказать так – шаблон действительно не самый сложный. «Синглтон», например, намного проще чем «Декоратор». Но даже такой простой шаблон в многопоточной среде может создать определенные проблемы. Это мы обсудим в практической части. А пока дадим определение шаблону и сценариям его использования.

Шаблон «Синглтон» — это шаблон проектирования, в котором в нашем приложении есть возможность создать объект определенного класса только в одном экземпляре. Точнее все созданные объекты определенного класса будут указывать на одинаковое место в памяти, то есть все созданные объекты будут одинаковы. Определение шаблона показало сценарии использования – один глобальный объект на всё приложение. Когда нам это может понадобиться?

  • классы для управления доступом к определенным ресурсам. Такими ресурсами могут быть потоки, файлы, соединения с базой данных;
  • классы для доступа к данным, которые должны быть неизменны во время работы приложения – например конфигурация приложения;
  • любой другой сценарий, где логика приложения или бизнес – требования требуют наличия объекта единственного в своём роде.

Что необходимо вспомнить перед тем, как мы перейдем к практической части:

  • модификаторы доступа
  • статические классы и методы
  • синхронизация ресурсов в многопоточным коде

Казалось бы, это простой шаблон проектирования, а чтобы его эффективно использовать необходимо знать 3 серьезные функции языка C#.

Пример кода из видео на GitHub

Для открытия файла проекта необходимо Visual Studio 2019.