← Все навыки

ООП, SOLID и паттерны проектирования

курс для начинающих бекенд-инженеров, которые пишут код, но пока «на ощупь» и хотят перейти от синтаксиса классов к осознанному проектированию. Готовит к junior-собеседованиям, где спрашивают SOLID «на пальцах» и просят найти нарушение в примере. К концу вы объясняете, почему один дизайн лучше другого, и не тянете паттерн туда, где хватило бы функции.

5 модулей, 18 тем Junior Индивидуально с ментором

Программа

О курсе

  • О чём этот курс: проектирование как предмет собеседования

Раздел 1: ООП как инструмент проектирования

  • Принципы ООП на одной карте
  • Инкапсуляция и абстракция: что мы прячем и зачем
  • Наследование и его цена; композиция
  • Полиморфизм: виды и механика подстановки
  • Интерфейсы и контракты: от абстрактного класса до утиной типизации

Раздел 2: Принципы проектирования

  • SOLID: пять букв на одной карте
  • SRP и OCP: где резать классы и как расти без переписывания
  • Практика 2.2. SRP и OCP: рефакторинг под красный тест
  • LSP: контракт подтипа
  • ISP и DIP; внедрение зависимостей
  • Вокруг SOLID: связность, зацепление, GRASP и здравый смысл

Раздел 3: Паттерны проектирования

  • Язык паттернов: зачем нужен каталог GoF и как о нём спрашивают
  • Порождающие: синглтон, фабрики, строитель
  • Структурные: адаптер, декоратор, фасад, прокси
  • Поведенческие: стратегия, наблюдатель, итератор и другие
  • Паттерны вокруг тебя: фреймворки, стандартные библиотеки, антипаттерны

Раздел 4: Вопросы с собеседований

  • Вопросы с собеседований по темам курса

Что разбираем

  • 4 столпа ООП осознанно — encapsulation (инварианты и сокрытие состояния, а не просто private-поля)
  • Abstraction
  • Inheritance vs composition и почему «composition over inheritance»
  • Polymorphism (динамическая диспетчеризация, duck typing)
  • Принципы SOLID через нарушения и рефакторинг — Single Responsibility (причины изменения, «god object»)
  • Open/Closed (расширение без правки существующего кода)
  • Liskov Substitution (контракты подтипов, классика «квадрат — не прямоугольник»)
  • Interface Segregation (толстые интерфейсы, fat interface)
  • Dependency Inversion (зависимость от абстракций, dependency injection)
  • Принципы простоты — DRY, KISS, YAGNI и их конфликты между собой
  • Паттерны GoF — порождающие (Factory Method, Abstract Factory, Builder, Singleton и его минусы как global state)
  • Структурные (Adapter, Decorator, Facade, Proxy)
  • Поведенческие (Strategy, Observer, Command, Template Method)
  • Coupling и cohesion как язык оценки дизайна
  • Уместность паттерна vs overengineering
  • Частые вопросы собеса про SOLID и паттерны

Практика

  • Разбор кейса «god object»: находим все причины изменения класса и режем его по Single Responsibility
  • Code-review чужого PR: помечаем нарушения SOLID и формулируем, каким принципом обосновать правку
  • Рефакторинг цепочки if/elif по типу сущности в полиморфизм и/или Strategy
  • Ищем нарушение Liskov в иерархии классов (Rectangle/Square, Bird/Penguin) и переделываем на composition
  • Дробим «толстый» интерфейс на роль-специфичные по Interface Segregation
  • Разворачиваем жёсткую зависимость от конкретной БД/клиента через Dependency Inversion и внедрение зависимости
  • Мини-проект: система уведомлений (email/SMS/push) на Strategy + Observer, добавляем новый канал без правки старого кода
  • Заменяем разросшийся конструктор с десятком параметров на Builder
  • Проектирование на доске: слой оплаты через Adapter к трём внешним провайдерам за единым интерфейсом
  • Оборачиваем сервис в Decorator для логирования и кеширования, не меняя его код
  • Кейс-дискуссия «паттерн или overengineering»: где Factory/Singleton оправданы, а где это лишняя абстракция
  • Тренажёр устных ответов: объясняем каждую букву SOLID на своём примере за 2 минуты, как на собеседовании

Как проходит обучение

  • Занятия один на один с ментором под ваш темп и пробелы
  • Материалы курса открываются в личном кабинете, практику разбираете на встречах
  • Программа собирается под цель: подготовка к собеседованию или рабочая задача