Паттерны

Паттерны проектирования на 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 (централизация взаимодействия между множеством объектов через…

Паттерны

Итоговый мини-проект: рефакторинг приложения с применением нескольких паттернов

Введение В заключительной статье цикла паттернов проектирования (и текущего общего объёма всего плана статей) собираем итоговый, практический пример — рефакторим намеренно неструктурированный, «плохо организованный» фрагмент приложения обработки заказов,…