TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #272 6.25K
Какие есть паттерны проектирования ?
Спросят с вероятностью 25%

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

Их обычно делят на три основные категории:

1️⃣ Порождающие (Creational Patterns)
Эти паттерны обеспечивают механизмы создания объектов, повышая гибкость и повторное использование существующего кода.
- Одиночка (Singleton): Гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
- Фабричный метод (Factory Method): Определяет интерфейс для создания объекта, но позволяет подклассам изменять тип создаваемых объектов.
- Абстрактная фабрика (Abstract Factory): Позволяет создавать семейства связанных объектов, не специфицируя их конкретные классы.
- Строитель (Builder): Позволяет создавать сложные объекты пошагово.
- Прототип (Prototype): Позволяет копировать объекты, не вдаваясь в подробности их реализации.

2️⃣ Структурные (Structural Patterns)
Структурные паттерны описывают способы сборки объектов и классов в более крупные структуры, при этом сохраняя гибкость и эффективность структур.
- Адаптер (Adapter): Позволяет объектам с несовместимыми интерфейсами работать вместе.
- Мост (Bridge): Разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо.
- Компоновщик (Composite): Позволяет считать единичные объекты и составные объекты единообразно.
- Декоратор (Decorator): Позволяет динамически добавлять новые функции объектам, помещая их в оболочку из других объектов.
- Фасад (Facade): Предоставляет упрощенный интерфейс к сложной системе классов, библиотеке или фреймворку.
- Приспособленец (Flyweight): Эффективно поддерживает большое количество мелких объектов.
- Заместитель (Proxy): Предоставляет заменитель или местозаполнитель для другого объекта, чтобы контролировать доступ к нему.

3️⃣ Поведенческие (Behavioral Patterns)
Поведенческие паттерны регулируют алгоритмы и ответственности между объектами, делают взаимодействие между объектами более гибким.
- Цепочка обязанностей (Chain of Responsibility): Позволяет передавать запросы последовательно по цепочке обработчиков.
- Команда (Command): Превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить в очередь, логировать и т.д.
- Итератор (Iterator): Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления.
- Посредник (Mediator): Уменьшает сложность взаимодействия между объектами, предоставляя централизованное место для управления ими.
- Хранитель (Memento): Позволяет сохранять и восстанавливать предыдущее состояние объекта без раскрытия подробностей его реализации.
- Наблюдатель (Observer): Позволяет объектам получать уведомления об изменении состояния других объектов.
- Состояние (State): Позволяет объекту изменять свое поведение при изменении его внутреннего состояния.
- Стратегия (Strategy): Определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость.
- Шаблонный метод (Template Method): Определяет скелет алгоритма, позволяя подклассам переопределять некоторые шаги алгоритма, не изменяя его структуру.
- Посетитель (Visitor): Позволяет добавлять новые операции к объектам без изменения классов этих объектов.

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

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 🔥 19
  • ❤ 3
  • 👍 2
  • 🤯 1
More from @easy_java_ru
  1. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  2. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  3. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  4. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  5. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  6. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
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 →