Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Основные понятия

Все темы Java Developer

Что такое «шаблон проектирования»?

«Шаблон проектирования» (design pattern) — это повторяемое решение общей проблемы проектирования программного обеспечения. Шаблоны проектирования предоставляют проверенные практики и структуры, которые помогают разработчикам создавать гибкие и поддерживаемые системы. Они не являются конкретным кодом, а скорее описанием способов организации кода для решения типичных задач. Шаблоны проектирования делятся на три основные категории:

  1. Порождающие ( Creational Patterns ): касаются способов создания объектов, обеспечивая гибкость и повторное использование кода. Примеры: Singleton, Factory Method, Abstract Factory.

  2. Структурные ( Structural Patterns ): касаются организации классов и объектов для создания новых функциональностей. Примеры: Adapter, Composite, Decorator.

  3. Поведенческие ( Behavioral Patterns ): касаются взаимодействия между объектами и распределения обязанностей. Примеры: Observer, Strategy, Command.

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


Назовите основные характеристики шаблонов

Основные характеристики шаблонов проектирования включают:

  1. Повторяемость: Решения, предоставляемые шаблонами, могут быть многократно использованы в различных проектах и ситуациях.

  2. Абстракция: Шаблоны описывают концептуальные решения, которые можно реализовать разными способами в зависимости от контекста.

  3. Документированность: Шаблоны подробно описаны, включая проблему, контекст, решение и последствия использования.

  4. Гибкость: Шаблоны предлагают гибкие решения, которые можно адаптировать под конкретные нужды проекта.

  5. Независимость от языка программирования: Шаблоны описывают общие концепции и могут быть реализованы на любом языке программирования.

  6. Улучшение архитектуры: Использование шаблонов помогает создавать более структурированные, понятные и поддерживаемые системы.


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

Типы шаблонов проектирования делятся на три основные категории:

  1. Порождающие (Creational Patterns):

    • Singleton: Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

    • Factory Method: Определяет интерфейс для создания объекта, но позволяет подклассам изменять тип создаваемого объекта.

    • Abstract Factory: Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.

    • Builder: Отделяет построение сложного объекта от его представления, так что один и тот же процесс построения может создавать разные представления.

    • Prototype: Создает новые объекты путем копирования существующего объекта-прототипа.

  2. Структурные (Structural Patterns):

    • Adapter: Преобразует интерфейс класса в интерфейс, ожидаемый клиентом, позволяя работать с несовместимыми интерфейсами.

    • Composite: Составляет объекты в древовидные структуры для представления иерархий часть-целое, позволяя клиентам работать с отдельными объектами и их комбинациями единообразно.

    • Decorator: Динамически добавляет новые обязанности объектам, действуя как гибкая альтернатива наследованию.

    • Facade: Предоставляет унифицированный интерфейс к набору интерфейсов в подсистеме, упрощая её использование.

    • Flyweight: Позволяет эффективно поддерживать множество мелких объектов путем совместного использования как можно большего количества данных.

    • Proxy: Предоставляет суррогат или заместителя другого объекта для контроля доступа к нему.

  3. Поведенческие (Behavioral Patterns):

    • Observer: Определяет зависимость типа “один ко многим” между объектами так, что при изменении состояния одного объекта все зависящие от него оповещаются и обновляются автоматически.

    • Strategy: Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми, позволяя изменять алгоритмы независимо от клиентов, которые их используют.

    • Command: Инкапсулирует запрос как объект, позволяя параметризовать клиентов с разными запросами, очередями или логами запросов, а также поддерживать отмену операций.

    • Iterator: Предоставляет способ последовательного доступа ко всем элементам составного объекта без раскрытия его внутреннего представления.

    • State: Позволяет объекту изменять свое поведение в зависимости от его состояния, делая изменения состояния явными.

    • Chain of Responsibility: Позволяет передавать запросы по цепочке обработчиков, где каждый обработчик либо обрабатывает запрос, либо передает его следующему обработчику.

    • Mediator: Определяет объект, инкапсулирующий способ взаимодействия множества объектов, снижая степень их взаимозависимости.

    • Memento: Позволяет сохранять и восстанавливать состояние объекта, не раскрывая его внутренней структуры.

    • Template Method: Определяет скелет алгоритма в методе, оставляя некоторые шаги подклассам для реализации.

Эта страница была полезной?