Курс строится по принципу от простого к сложному. Сначала студенты разбираются с основами, а затем переходят к конкретным паттернам и их применению в реальных проектах.
На этом курсе начинают с понимания, что такое паттерны проектирования и зачем они нужны. Здесь объясняют концепции чистого кода, рефакторинга и test driven development. Во время live-кодинга показывают, как превратить плохой код в хороший. Студенты узнают, чем отличается качественный код, изучают признаки плохого кода и типы рефакторинга.
Далее курс охватывает антипаттерны - типичные ошибки проектирования. Студенты понимают, что такое избыточное и недостаточное проектирование. Учатся создавать код, который не только компилируется, но и эффективно выполняется. Также рассматривают способы реализации паттернов, изучают GRASP-паттерны и GoF-паттерны, учатся их классифицировать.
В этой части курс показывает, как создавать объекты с помощью паттернов Abstract Factory, Builder, Factory Method и Prototype. Студенты изучают принципы SOLID, знакомятся с DI-фреймворками. Отдельно рассматривают паттерн Singleton - его реализацию разными языками программирования и использование в различных DI-фреймворках.
Курс детально разбирает структурные паттерны: Adapter, Bridge, Facade, Flyweight, Proxy. Студенты учатся применять их в коде. Например, паттерн Flyweight используют для уменьшения потребления памяти. Отдельно сравнивают наследование и композицию, показывают преимущества последней. Паттерн Decorator применяют для логирования и обработки ошибок.
Здесь курс охватывает паттерны, определяющие взаимодействие объектов. Студенты изучают Command, CQRS, ORM-шаблоны, State, Strategy, Template Method, Memento, Mediator, Observer и Visitor. Обучаются применять и адаптировать эти шаблоны под конкретные задачи. Важный аспект - умение выбирать правильный паттерн на основе поставленной задачи.
Завершающие модули посвящены паттернам корпоративных приложений. Курс показывает эволюцию принципов проектирования и современные подходы к решению сложных проблем. Студенты изучают шаблоны кеширования, управления исключениями, взаимодействия с пользователем, Actor Model и Event Sourcing. В конце лектор дает рекомендации по карьерному развитию, рассказывает о популярных собеседных вопросах, а студенты презентуют собственные курсовые проекты.
После курса повысится уровень квалификации. Появятся умения работать с рефакторингом кода и паттернами проектирования. Студенты научатся декомпозировать большие системы, писать чистый код. Большое внимание уделяется практическим навыкам.