TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.81K subscribers
Post #1598 2.14K
Руководство по выбору паттерна проектирования (текстовое описание к предыдущему посту)

Чтобы выбрать паттерн, сначала необходимо идентификацировать проблему. Если проблема связана с:

🔸 Созданием объектов? → Порождающие паттерны
🔸 Сборкой объектов? → Структурные паттерны
🔸 Взаимодействием объектов? → Поведенческие паттерны


𝟭. Порождающие паттерны

🔹 Singleton: Используйте, когда нужен один экземпляр класса. Некоторые примеры — это логирование и соединения с базой данных.
🔹 Фабричный метод: Отделите создание объекта от использования. Например, вы создаете различные типы подключений к базе данных на основе конфигурации.
🔹 Абстрактная фабрика: Создание семейств связанных объектов. Например, я создаю парсеры для разных форматов файлов.
🔹 Строитель: Построение сложных объектов шаг за шагом. Например, если вам нужно создать сложный доменный объект.
🔹 Прототип: создание дубликатов объектов и повторное использование кэшированных объектов для сокращения обращений к базе данных.

𝟮. Структурные паттерны

🔹 Адаптер: делает несовместимые интерфейсы совместимыми. Например, он интегрирует новую библиотеку журналирования в существующую систему, которая ожидает другой интерфейс.
🔹 Компоновщик: представляет иерархии часть-целое. Например, графические объекты в приложении для рисования могут быть сгруппированы и обработаны единообразно
🔹 Прокси: Управление доступом к объектам. Например, ленивая загрузка изображения высокого разрешения в веб-приложении.
🔹 Декоратор: Динамически добавлять/удалять поведение. Например, мы реализуем сжатие или шифрование поверх потоков файлов.
🔹 Мост: Отделите абстракцию от реализации. Например, я отделяю платформенно-зависимый код от базовой логики.

𝟯. Поведенческие паттерны

🔹 Стратегия: Определяет семейство алгоритмов. Эти алгоритмы позволяют пользователям выбирать из различных алгоритмов сортировки или сжатия.
🔹 Наблюдатель: Поддерживайте единообразное состояние, получая уведомления об изменениях и, например, уведомляя подписчиков о событиях в системе обмена сообщениями.
🔹 Команда: Инкапсулировать запрос как объект. Например, я реализую функциональность отмены/повтора в текстовом или графическом редакторе.
🔹 Состояние: инкапсулировать поведение, специфичное для состояния. Например, мы обрабатываем различные состояния элемента пользовательского интерфейса (например, включено, отключено, выбрано).
🔹 Шаблонный метод: определение скелета работающего алгоритма с передачей некоторых шагов подклассам и реализацией базового класса для модульного тестирования с настраиваемыми шагами настройки и демонтажа.
  • ❤ 13
  • 🔥 8
  • 👏 4
  • 👍 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →