Паттерны проектирования на C++ и Qt: порождающие, структурные и поведенческие шаблоны с реализациями и разбором, когда паттерн уместен, а когда усложняет код. Примеры адаптированы под идиомы Qt.
Prototype: клонирование объектов
Введение Завершаем блок порождающих паттернов темой Prototype — паттерном, решающим задачу создания нового объекта путём копирования (клонирования) уже существующего, готового экземпляра-образца, а не созданием с нуля через конструктор,…
Builder: пошаговое создание сложных объектов
Введение Конструкторы класса хорошо работают для относительно простых объектов с небольшим, фиксированным набором обязательных параметров — Builder решает задачу создания СЛОЖНЫХ объектов с большим количеством опциональных параметров, избегая…
Factory Method и Abstract Factory
Введение Статья Singleton показала что для контроля создания единственного экземпляра — Factory Method и Abstract Factory решают другую, но связанную задачу: инкапсуляцию ЛОГИКИ создания объектов, особенно когда конкретный…
Singleton: реализация, потокобезопасность, критика паттерна
Введение Singleton — вероятно, самый известный (и одновременно самый критикуемый) паттерн из всех — гарантирует существование ровно ОДНОГО экземпляра класса на протяжении всей программы с глобальной точкой доступа…
Обзор паттернов проектирования: зачем нужны, GoF классификация, антипаттерны
Введение Цикл синтаксиса C/C++ разобрал ООП-инструменты языка — наследование, виртуальные функции, шаблоны — но не systematized, как именно эти инструменты комбинируются для решения типичных, повторяющихся архитектурных задач. Паттерны…
Bridge: разделение абстракции и реализации
Введение Завершаем блок структурных паттернов темой Bridge — паттерном, решающим задачу избежания «взрыва» количества классов при попытке комбинировать две независимо изменяющиеся «оси» вариативности (например, разные виды UI-элементов и…
Chain of Responsibility и Mediator
Введение Завершаем обзор отдельных паттернов парой Chain of Responsibility (передача запроса по цепочке потенциальных обработчиков до первого, способного его обработать) и Mediator (централизация взаимодействия между множеством объектов через…
Итоговый мини-проект: рефакторинг приложения с применением нескольких паттернов
Введение В заключительной статье цикла паттернов проектирования (и текущего общего объёма всего плана статей) собираем итоговый, практический пример — рефакторим намеренно неструктурированный, «плохо организованный» фрагмент приложения обработки заказов,…