Руководство по выбору паттерна проектирования (текстовое описание к предыдущему посту)
Чтобы выбрать паттерн, сначала необходимо идентификацировать проблему. Если проблема связана с:
🔸 Созданием объектов? → Порождающие паттерны
🔸 Сборкой объектов? → Структурные паттерны
🔸 Взаимодействием объектов? → Поведенческие паттерны
𝟭. Порождающие паттерны
🔹 Singleton: Используйте, когда нужен один экземпляр класса. Некоторые примеры — это логирование и соединения с базой данных.
🔹 Фабричный метод: Отделите создание объекта от использования. Например, вы создаете различные типы подключений к базе данных на основе конфигурации.
🔹 Абстрактная фабрика: Создание семейств связанных объектов. Например, я создаю парсеры для разных форматов файлов.
🔹 Строитель: Построение сложных объектов шаг за шагом. Например, если вам нужно создать сложный доменный объект.
🔹 Прототип: создание дубликатов объектов и повторное использование кэшированных объектов для сокращения обращений к базе данных.
𝟮. Структурные паттерны
🔹 Адаптер: делает несовместимые интерфейсы совместимыми. Например, он интегрирует новую библиотеку журналирования в существующую систему, которая ожидает другой интерфейс.
🔹 Компоновщик: представляет иерархии часть-целое. Например, графические объекты в приложении для рисования могут быть сгруппированы и обработаны единообразно
🔹 Прокси: Управление доступом к объектам. Например, ленивая загрузка изображения высокого разрешения в веб-приложении.
🔹 Декоратор: Динамически добавлять/удалять поведение. Например, мы реализуем сжатие или шифрование поверх потоков файлов.
🔹 Мост: Отделите абстракцию от реализации. Например, я отделяю платформенно-зависимый код от базовой логики.
𝟯. Поведенческие паттерны
🔹 Стратегия: Определяет семейство алгоритмов. Эти алгоритмы позволяют пользователям выбирать из различных алгоритмов сортировки или сжатия.
🔹 Наблюдатель: Поддерживайте единообразное состояние, получая уведомления об изменениях и, например, уведомляя подписчиков о событиях в системе обмена сообщениями.
🔹 Команда: Инкапсулировать запрос как объект. Например, я реализую функциональность отмены/повтора в текстовом или графическом редакторе.
🔹 Состояние: инкапсулировать поведение, специфичное для состояния. Например, мы обрабатываем различные состояния элемента пользовательского интерфейса (например, включено, отключено, выбрано).
🔹 Шаблонный метод: определение скелета работающего алгоритма с передачей некоторых шагов подклассам и реализацией базового класса для модульного тестирования с настраиваемыми шагами настройки и демонтажа.
Post #1598
2.14K
- ❤ 13
- 🔥 8
- 👏 4
- 👍 1