Один из простейших и важнейших паттернов - Singleton. Данный паттерн решает проблему организации доступа к классу, который реализует какую-нибудь общую функциональность. Как сделать структуру, где будет реализован один объект и возможность использовать его в разных местах оптимизировано? Подробнее в этой статье. Разбор на примере Предположим, что нужно создать оболочку для работы с запросами. Для этого реализуем отдельный класс RequestManager. Реализации полноценного менеджера запросов не будет, т.к. не в нем суть. Менеджер запросов есть и всё работает. Для вызова нужно создать новый объект класса RequestManager и использовать его методы. Вроде бы всё красиво, но если нам нужно использовать этот менеджер в других местах то придется создавать новый экземпляр класса RequestManager. Для решения этой проблемы используем паттерн Singleton. Теперь можно получить класс RequestManager из любого места через метод GetInstance(). Результат: Итог Паттерн Singleton позволяет реализовать класс один