Данная статья представляет собой шпаргалку по шаблонам проектирования с примерами на языках программирования С++ и Dart. Часть информации была взята из ресурсов, опубликованных на Хабре, а также из раздела сайта refactoring.guru. В шпаргалке будет рассмотрено 23 шаблона проектирования "Банды Четырех".
В диаграммах подразделов будут использованы следующие обозначения:
![]() |
Агрегация (aggregation) | Описывает связь «часть»–«целое», в котором «часть» может существовать отдельно от «целого». Ромб указывается со стороны «целого». |
![]() |
Композиция (composition) | Подвид агрегации, в которой «части» не могут существовать отдельно от «целого». |
![]() |
Зависимость (dependency) | Изменение в одной сущности (независимой) может влиять на состояние или поведение другой сущности (зависимой). Со стороны стрелки указывается независимая сущность. |
![]() |
Обобщение (generalization) | Отношение наследования или реализации интерфейса. Со стороны стрелки находится суперкласс или интерфейс. |
Отвечают за удобное и безопасное создание новых объектов или даже целых семейств объектов.
Оотвечают за построение удобных в поддержке иерархий классов.
Решают задачи эффективного и безопасного взаимодействия между объектами программы.