Назад к вопросам
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. Превращает запрос в объект, позволяя тем самым параметризовать клиентские объекты с различными запросами, ставить запросы в очередь или протоколировать их, а также поддерживать отмену операций.