TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2354 1.65K
Вкратце по шаблонам проектирования

Почему шаблоны проектирования важны?

1. Возможность повторного использования
* Проверенные решения, которые работают в разных проектах

2. Гибкость
* Способствуют слабой связности компонентов и упрощают поддержку

3. Коммуникация
* Создают общий язык для обсуждения проблем проектирования и их решений

4. Опыт
* Инкапсулируют опыт опытных разработчиков, помогая другим избегать типичных ошибок и создавать более качественное ПО


Рассмотрим основные задачи которые решают шаблоны.

Порождающие шаблоны

1. Абстрактная фабрика
* Создаёт семейства взаимосвязанных объектов через общий интерфейс

2. Строитель
* Разделяет построение сложного объекта от его представления

3. Фабричный метод
* Определяет интерфейс для создания объектов
* Позволяет подклассам выбирать конкретный класс для создания

4. Прототип
* Создаёт новые объекты путём копирования прототипа

5. Одиночка
* Гарантирует, что класс имеет только один экземпляр

Структурные шаблоны

6. Адаптер
* Преобразует один интерфейс в другой, позволяя несовместимым классам работать вместе

7. Мост
* Разделяет абстракцию и реализацию, позволяя им изменяться независимо

8. Компоновщик
* Обрабатывает отдельные объекты и их композиции единообразно, представляя иерархии часть-целое

9. Декоратор
* Динамически добавляет функциональность объекту без использования наследования

10. Фасад
* Предоставляет упрощённый интерфейс к сложной подсистеме

11. Лёгковес
* Разделяет объекты для уменьшения использования памяти при большом количестве мелких объектов

12. Заместитель
* Контролирует доступ к объекту, предоставляя различные возможности, такие как отложенная загрузка или удалённый доступ

Поведенческие шаблоны

13. Цепочка ответственности
* Разделяет отправителей и получателей запросов, позволяя нескольким объектам обрабатывать запрос

14. Команда
* Инкапсулирует запросы в объекты, позволяя вести логирование, создавать очереди и выполнять операции отмены/повтора

15. Интерпретатор
* Определяет грамматику языка и интерпретатор для выполнения выражений

16. Итератор
* Обеспечивает последовательный доступ к элементам агрегата без раскрытия внутреннего представления

17. Посредник
* Инкапсулирует взаимодействие объектов, способствуя слабой связности

18. Хранитель
* Сохраняет и восстанавливает состояние объекта без нарушения инкапсуляции

19. Наблюдатель
* Автоматически уведомляет зависимые объекты при изменении состояния

20. Состояние
* Изменяет поведение объекта при изменении его внутреннего состояния

21. Стратегия
* Инкапсулирует взаимозаменяемые алгоритмы, позволяя клиентам выбирать их динамически

22. Шаблонный метод
* Определяет скелет алгоритма, откладывая шаги реализации на подклассы

23. Посетитель
* Добавляет новые операции к структурам объектов без изменения классов элементов
  • 👍 10
  • 🔥 7
  • 🤓 5
  • 👏 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 →