Встречается на собеседованиях • сегодня

Какие шаблоны проектирования знаешь

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

Порождающие шаблоны (Creational Patterns)

Эти шаблоны связаны с процессом создания объектов, делая систему независимой от способа их создания, композиции и представления.

1. Одиночка (Singleton): Обеспечивает создание только одного экземпляра класса и предоставляет глобальную точку доступа к этому экземпляру.
2. Абстрактная фабрика (Abstract Factory): Позволяет создавать семейства связанных объектов без указания их конкретных классов.
3. Фабричный метод (Factory Method): Определяет интерфейс для создания объекта, но оставляет выбор класса объекта подклассам.
4. Строитель (Builder): Позволяет создавать сложные объекты пошагово.

5. Прототип (Prototype): Позволяет копировать существующие объекты без создания зависимости от их классов.

Структурные шаблоны (Structural Patterns)

Описывают способы построения объектов и классов в более крупные структуры, при этом сохраняя гибкость и эффективность структур.

1. Адаптер (Adapter): Позволяет объектам с несовместимыми интерфейсами работать вместе.
2. Мост (Bridge): Разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо друг от друга.
3. Компоновщик (Composite): Позволяет группировать объекты в древовидные структуры для представления иерархий часть-целое.
4. Декоратор (Decorator): Динамически добавляет новые обязанности объектам.
5. Фасад (Facade): Предоставляет упрощённый интерфейс к сложной системе классов, библиотеке или фреймворку.
6. Прокси (Proxy): Предоставляет заместителя или плейсхолдер для другого объекта для контроля доступа к нему.

Поведенческие шаблоны (Behavioral Patterns)

Рассматривают эффективное взаимодействие и распределение обязанностей между объектами.

1. Наблюдатель (Observer): Позволяет объектам получать уведомления об изменениях состояния других объектов.
2. Стратегия (Strategy): Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми.
3. Команда (Command): Превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов.
4. Состояние (State): Позволяет объекту изменять своё поведение при изменении его внутреннего состояния.
5. Цепочка обязанностей (Chain of Responsibility): Позволяет передавать запросы вдоль цепочки обработчиков. При этом каждый обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепочке.
6. Посредник (Mediator): Уменьшает связанность множества классов, вынося взаимодействие между объектами в один класс-посредник.
7. Итератор (Iterator): Предоставляет способ последовательного доступа к элементам объекта-агрегата без раскрытия его внутреннего представления.

Эти шаблоны не являются жёсткими правилами, а скорее рекомендациями и лучшими практиками, которые можно адаптировать под конкретные задачи и условия проекта.

May 22, 2024, easyoffer

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы