Proxy: заместитель объекта (lazy loading, защита доступа)
Введение Иногда нужен объект, который выглядит и используется точно так же, как реальный, целевой объект, но при этом контролирует доступ к этому целевому объекту — откладывая его реальное…
Введение Иногда нужен объект, который выглядит и используется точно так же, как реальный, целевой объект, но при этом контролирует доступ к этому целевому объекту — откладывая его реальное…
Введение Многие реальные предметные области естественно моделируются как иерархия «часть-целое» — файловая система (директории, содержащие файлы и другие директории), графический интерфейс (контейнеры виджетов, содержащие другие виджеты, статьи QML-цикла…
Введение Сложная подсистема (множество взаимодействующих классов, или сторонняя библиотека с богатым, многогранным API, CMake/OpenCV) может быть избыточно сложной для типичного, повседневного использования — Facade предоставляет упрощённый, единый интерфейс…
Введение Наследование — стандартный способ расширения поведения класса, но он статичен (определяется на этапе компиляции и применяется ко ВСЕМ экземплярам производного класса одинаково) — Decorator решает задачу ДИНАМИЧЕСКОГО,…
Введение Открываем блок структурных паттернов темой Adapter — одним из самых практически частых паттернов, решающим простую, но регулярно встречающуюся задачу: использование класса с интерфейсом, несовместимым с тем, что…
Введение В этой статье разберём два паттерна одновременно — Template Method (определение общего «скелета» алгоритма с настраиваемыми шагами через переопределение в подклассах) и Visitor (добавление новых операций к…
Введение В статьях QML-цикла разбирала States/Transitions QML как декларативный механизм управления состояниями интерфейса — паттерн State даёт концептуально аналогичный, но реализуемый непосредственно на C++ подход к структурированию кода,…
Введение Большинство интерактивных приложений (текстовые редакторы, графические редакторы) нуждаются в функциональности отмены/повтора действий (undo/redo) — Command решает эту задачу, превращая каждое отдельное действие пользователя в самостоятельный объект, который…
Введение В этой статье разберём паттерн по существу, для случаев, где он РЕАЛЬНО оправдан: когда конкретный алгоритм для выполнения определённой задачи должен выбираться или изменяться во время выполнения,…
Введение Qt сигналы/слоты — это готовая реализация Observer, не требующая написания вручную — в этой статье разберём паттерн Observer систематически: его классическую, «ручную» реализацию на чистом C++, и…