1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vectorx-NOTE_DesignPatterns

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
设计模式对比.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 25.04.2025 14:05 c94d87a

[TOC]

Сравнение паттернов проектирования

1. Паттерн Абстрактная фабрика VS Паттерн Построитель VS Паттерн Шаблонный метод

Сначала рассмотрим определения каждого паттерна:

  • Паттерн Абстрактная фабрика: фабрика определяет, какой конкретный класс продукта создается.
  • Паттерн Построитель: процесс создания сложного объекта вынесен в отдельный класс, что позволяет создавать объекты с разными свойствами.
  • Паттерн Шаблонный метод: определяет скелет алгоритма, откладывая некоторые шаги на подклассы. Разделяется на поведенческие паттерны классов и объектов, где первый использует наследование, а второй — композицию или агрегацию.

Вот таблица, которая подводит итоги их различий:

Паттерн Абстрактная фабрика Паттерн Построитель Паттерн Шаблонный метод
Создание объектов Создание объектов Структура методов
Создание объектов Создание сложных объектов Определение скелета алгоритма
Создание конкретных продуктов Процесс создания объектов Структура алгоритма
Продукты обычно не связаны Процессы создания связаны, они служат для создания сложного объекта, который затем собирается в директоре Алгоритмы связаны, скелет алгоритма определен в базовом классе, конкретные реализации в подклассах

Сначала рассмотрим определения двух паттернов:

  • Паттерн Адаптер: преобразует интерфейс одного класса в другой, чтобы классы, которые не могут работать вместе из-за несовместимости интерфейсов, могли работать вместе.
  • Паттерн Доступ: разделяет абстракцию и реализацию, позволяя им изменяться независимо.

Вот таблица, которая подводит итоги их различий:

Адаптер паттерн Паттерн моста
Структурный паттерн Структурный паттерн
Преобразование одного интерфейса в другой Разделение реализации и интерфейса, которые могут изменяться независимо
Наследование базового класса + реализация интерфейса Композиция интерфейсов

3. Фасадный шаблон VS Прокси шаблон VS Командный шаблон

Сначала рассмотрим определения каждого из этих шаблонов:

  • Фасадный шаблон: предоставляет единую высокую точку доступа для группы интерфейсов подсистем, что делает эти подсистемы легкодоступными.
  • Прокси шаблон: предоставляет прокси-объект для контроля доступа к объекту по определенным причинам.
  • Командный шаблон: обертывает запрос в объект, что позволяет отделить ответственность за отправку запроса от ответственности за его выполнение.

Вот таблица, которая суммирует различия между ними:| Фасадный шаблон | Прокси шаблон | Командный шаблон | | :-------------------------------------------- | :---------------------------------------------- | :----------------------------------------------------------- | | Структурный шаблон | ~ | Поведенческий шаблон | | Предоставляет единую высокую интерфейс для группы интерфейсов подсистем | Основное внимание уделяется замене действий, уменьшая количество действий с реальными объектами | Отделение запроса и выполнения | | Через композицию и агрегацию | Через композицию и агрегацию + реализацию интерфейса | Через композицию и агрегацию | | Класс фасада не обязан использовать все методы подсистемы | Класс прокси обязан реализовать все методы подопечного объекта | Командующий объект не обязан использовать все методы объекта-получателя | | Класс фасада может обернуть несколько классов | Класс прокси обрабатывает только один класс | Один командующий объект выполняет только один запрос, один объект-получатель может соответствовать нескольким командующим объектам |

4. Шаблон наблюдателя VS Шаблон посредника

Сначала рассмотрим определения каждого из этих шаблонов:- Шаблон наблюдателя: Определяет одно-ко-многим отношение между объектами так, что когда один объект изменяется, все зависящие от него объекты автоматически обновляются.

  • Шаблон посредника: Определяет объект-посредник для упаковки взаимодействий между группой объектов, что позволяет сделать их взаимодействие более слабо связаным и позволяет изменять их взаимодействие независимо.Вот таблица, которая суммирует различия между ними:
Паттерн наблюдателя Паттерн посредника
Поведенческий паттерн ~
Упорядочивает уведомление Упорядочивает взаимодействие между коллегами
Все наблюдатели получают уведомление Коллеги могут выбирать, с кем взаимодействовать
Логика обработки находится у отправителя Логика обработки находится у посредника
Наблюдатели и наблюдаемые разделены Взаимодействие коллег разделено

5. Стратегия и Состояние: сравнение

Сначала рассмотрим определения двух паттернов проектирования:

  • Стратегия: этот паттерн определяет набор алгоритмов и упаковывает каждый из них, чтобы они могли взаимозаменяться, и изменения алгоритмов не влияли на клиентов, использующих эти алгоритмы.
  • Состояние: для объектов с состоянием, сложные "логические условия" извлекаются в различные объекты состояния, позволяющие объектам изменять свое поведение при изменении внутреннего состояния.| Стратегия | Состояние | | :------------------------------------------------------ | :----------------------------------------------------------- | | Поведенческий паттерн | | | Несколько классов для различения поведения (алгоритмов) | Несколько классов для различения состояний | | Группа схем или алгоритмов, которые могут быть заменены, выбор стратегии зависит от внешних условий | Основное решение сложных процессов изменения состояния, этот процесс определяется внутренними условиями объекта | | Классы стратегии не зависят от контекста | Классы состояния зависят от контекста |## 6. Стратегия и Шаблонный метод: сравнение

Сначала рассмотрим определения двух паттернов проектирования:

  • Стратегия: этот паттерн определяет набор алгоритмов и упаковывает каждый из них, чтобы они могли взаимозаменяться, и изменения алгоритмов не влияли на клиентов, использующих эти алгоритмы.
  • Шаблонный метод: определяет скелет алгоритма, но откладывает некоторые части алгоритма в подклассах, позволяя подклассам переопределять некоторые части алгоритма без изменения его структуры.Вот таблица, которая суммирует различия между ними:
Паттерн Стратегия Паттерн Шаблонный метод
Поведенческий паттерн ~
Выбор стратегии определяется внешними факторами Выбор конкретной реализации определяется внешними факторами
Определяет серию алгоритмов и упаковывает их, Определяет скелет алгоритма и откладывает некоторые шаги на
позволяя им взаимно заменяться и быть независимыми от изменений клиента реализацию в подклассах
Использует полиморфизм Использует наследование
Ориентирован на решение проблем, связанных с Ориентирован на решение проблем, связанных с бизнес-процессами
разнообразием алгоритмов и их влиянием на структуру кода сложностью и стабильностью бизнес-процессов (общая структура алгоритма не изменяется), при этом некоторые шаги могут изменяться значительно (конкретная реализация некоторых шагов различна)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/vectorx-NOTE_DesignPatterns.git
git@api.gitlife.ru:oschina-mirror/vectorx-NOTE_DesignPatterns.git
oschina-mirror
vectorx-NOTE_DesignPatterns
vectorx-NOTE_DesignPatterns
main