PRO

Что такое паттерны проектирования? Назовите 3–5 примеров

Паттерны проектирования — типовые проверенные подходы к повторяющимся проблемам в проектировании программ. Это не готовые библиотеки и не обязательные шаблоны, а общий язык для обсуждения структуры кода и взаимодействия объектов.
Подробный ответ

Что такое паттерн проектирования

Паттерн описывает типовую проблему, контекст её появления и общую идею решения. Он не должен применяться автоматически: паттерн полезен, если действительно упрощает код и соответствует задаче.

Singleton

Singleton гарантирует, что у класса существует один экземпляр, и предоставляет к нему общую точку доступа. Его могут применять для конфигурации или общего клиента, но использовать нужно осторожно: глобальное состояние усложняет тестирование и создаёт скрытые зависимости.

Factory

Factory инкапсулирует создание объектов. Клиентский код просит фабрику создать объект нужного типа и не зависит от деталей конкретного конструктора.

def create_payment_gateway(provider: str):
    if provider == 'stripe':
        return StripeGateway()
    if provider == 'paypal':
        return PayPalGateway()
    raise ValueError('Unsupported provider')

Strategy

Strategy позволяет выбирать взаимозаменяемый алгоритм во время работы программы. Например, расчёт стоимости доставки может использовать разные стратегии для курьера, самовывоза и международной доставки.

Observer

Observer описывает механизм подписки на события. Когда состояние объекта изменяется, он уведомляет подписчиков. Примеры: доменные события, уведомления пользователей, обработка изменений в UI.

Adapter

Adapter позволяет совместить несовместимые интерфейсы. Например, он может привести API внешнего платёжного провайдера к интерфейсу PaymentGateway, который использует приложение.

Repository

Repository изолирует работу с хранилищем данных от бизнес-логики. Он может скрывать ORM, SQL-запросы или детали внешнего источника данных за понятным интерфейсом.

Как ответить на собеседовании

Паттерны проектирования — это проверенные схемы решения повторяющихся архитектурных задач. Например, Factory инкапсулирует создание объектов, Strategy позволяет менять алгоритм, Observer организует подписку на события, Adapter согласует несовместимые интерфейсы, а Repository изолирует доступ к данным. Паттерн выбирают по задаче, а не ради самого паттерна.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге