Назад к вопросам
Junior
70
questionbank
Приведите примеры основных шаблонов проектирования.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Порождающие:
- Singleton: Гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.
- Factory Method: Определяет интерфейс для создания объектов, но позволяет подклассам выбирать тип создаваемых объектов.
- Abstract Factory: Предоставляет интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов.
- Builder: Шаблон предназначен для создания сложных объектов пошагово. Позволяет получить различные типы и представления объекта, используя один и тот же код строительства.
- Prototype: Задает виды создаваемых объектов при помощи экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.
-
Структурные:
- Adapter: Преобразует интерфейс одного класса в другой интерфейс, который ожидают клиенты. Позволяет работать классам с несовместимыми интерфейсами вместе.
- Decorator: Динамически добавляет объектам новую функциональность, оборачивая их в специальный объект-обёртку.
- Composite: Позволяет компоновать объекты в древовидные структуры и работать с ними так, как будто они являются индивидуальными объектами.
- Proxy: Предоставляет заместитель, или местозаполнитель другого объекта для контроля доступа к нему.
- Facade: Предоставляет унифицированный интерфейс к набору интерфейсов в подсистеме. Определяет высокоуровневый интерфейс, который упрощает использование подсистемы.
- Bridge: Разделяет абстракцию и ее реализацию так, чтобы абстракцию и реализацию можно было изменять независимо.
-
Поведенческие:
- Observer: Определяет зависимость "один-ко-многим" между объектами, чтобы при изменении состояния одного объекта все его зависимые объекты уведомлялись и автоматически обновлялись.
- Strategy: Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Позволяет выбирать алгоритм во время выполнения.
- Template Method: Определяет основу алгоритма в родительском классе и позволяет подклассам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
- Iterator: Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления.
- State: Позволяет объекту изменять свое поведение в зависимости от его внутреннего состояния.
- Command. Превращает запрос в объект, позволяя тем самым параметризовать клиентские объекты с различными запросами, ставить запросы в очередь или протоколировать их, а также поддерживать отмену операций.