Фабричный метод, абстрактная фабрика, строитель, прототип.
Фабричный метод
Фабричный метод (виртуальный конструктор, factory method) — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Зачем?
Отделяет код производства объектов от остального кода, который эти объекты использует.
Позволяет расширять классы вашего фреймворка через наследование путем переопределения метода, создающего объекты.
Позволяет экономить системные ресурсы путем повторного использования уже созданных объектов вместо порождения новых.
Плюсы:
1. Избавляет главный класс от привязки к конкретным типам объектов.
2. Выделяет код производства объектов в одно место, упрощая поддержку кода.
3. Упрощает добавление новых типов объектов в программу.
4. Реализует принцип открытости/закрытости.
Минусы:
1. Может привести к созданию больших параллельных иерархий классов, так как для каждого типа объекта надо создать свой подкласс создателя.
Почему написано синим?
1. Записки заполняем синим, это правильно, но ключевые моменты выделяем красным.
2. В космосе записываем положительные результаты зеленым, отрицательные – красным.
3. На доске пишем основную информацию черным, ключевые моменты – красным.
Абстрактная фабрика
Абстрактная фабрика (Abstract Factory) — это порождающий паттерн проектирования, который позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов.
Плюсы:
1. Гарантирует «сочетаемость» создаваемых объектов.
2. Избавляет клиентский код от привязки к конкретным типам объектов.
3. Выделяет код производства объектов в одно место, упрощая поддержку кода.
4. Упрощает добавление новых типов объектов в программу.
5. Реализует принцип открытости/закрытости.
Минусы:
1. Усложняет код программы из-за введения множества дополнительных классов.
2. Требует наличия всех типов объектов в каждой вариации.
Строитель
Строитель — это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово. Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
Когда задуматься?
1. Если у Вас есть один конструктор с десятью опциональными параметрами. Его неудобно вызывать, поэтому Вы создали ещё десять конструкторов с меньшим количеством параметров. Всё, что они делают — это переадресуют вызов к базовому конструктору, подавая какие-то значения по умолчанию в параметры, которые пропущены в них самих.
2. Если создание нескольких представлений объекта состоит из одинаковых этапов, которые отличаются в деталях.
3. Если Вам нужно собирать сложные составные объекты, например, деревья Компоновщика.
Плюсы:
1. Позволяет создавать объекты пошагово.
2. Позволяет использовать один и тот же код для создания различных объектов.
3. Изолирует сложный код сборки объекта от его основной бизнес-логики.
Минусы:
1. Усложняет код программы из-за введения дополнительных классов.
2. Клиент может оказаться привязан к конкретным классам строителей, так как в интерфейсе строителя может не быть метода получения результата.
Прототип
Прототип — это порождающий паттерн проектирования, который определяет механизм копирования объектов без погружения в подробности их реализации.
Плюсы:
1. Позволяет клонировать объекты, не привязываясь к их конкретным классам.
2. Меньше повторяющегося кода инициализации объектов.
3. Ускоряет создание объектов.
Минус:
1. Сложно клонировать составные объекты, имеющие ссылки на другие объекты.
1 view
1
1
11 months ago 00:06:20 1
C++. Паттерн проектирования программ “Декоратор (Decorator)“.
11 months ago 00:08:50 1
C++. Паттерн проектирования программ “Компоновщик (Composite)“.
11 months ago 00:06:32 1
C++. Паттерн проектирования программ “ Мост (Bridge)“.
11 months ago 00:07:50 1
C++. Паттерн проектирования программ “ Адаптер (Adapter)“. Реализация на уровне классов.
11 months ago 00:06:46 1
C++. Паттерн проектирования программ “ Адаптер (Adapter)“. Реализация на уровне объектов.
11 months ago 00:04:17 1
C++. Паттерн проектирования программ “Прототип (Prototype)“.
11 months ago 00:05:21 1
C++. Паттерн проектирования программ “Одиночка (Singleton)“.
11 months ago 00:11:15 1
C++. Паттерн проектирования программ “Строитель (Builder)“.
11 months ago 00:08:38 1
C++. Паттерн проектирования программ “Абстрактная фабрика (Abstract Factory)“.
11 months ago 00:05:33 1
C++. Паттерн проектирования программ “Фабричный метод (FactoryMethod)“.
11 months ago 00:58:38 1
Минимальный уровень python для первой работы
11 months ago 00:45:30 1
Алексей Корюкин — Что нового в интерфейсе ОС Аврора 5: управление и паттерны взаимодействия
11 months ago 00:39:31 1
Особенности проектирования под ОС Аврора // Марина Салова, МойОфис
12 months ago 00:39:04 1
Кто не станет Go Junior Разработчиком в 2023? КНИГИ ВАКАНСИИ СОВЕТЫ
12 months ago 00:32:46 1
Автоматизация тестирования на С#
12 months ago 00:34:22 2
ХОЧЕШЬ ВЫУЧИТЬ Python? Давай вместе :)
12 months ago 01:02:14 1
[SafeCode Live] Secure by design
12 months ago 00:23:11 1
Паттерны проектирования в Java с нуля ➤ Паттерн Factory Method
12 months ago 00:05:06 1
9 Паттерн проектирования State Состояние
12 months ago 00:24:14 1
Абстрактная фабрика. Паттерны проектирования — обмен простоты на гибкость?
12 months ago 02:28:48 1
Искусственный интеллект и нейронные сети C#. Машинное обучение для начинающих. Простая нейросеть.