Прокси, Декоратор, Адаптер и Шаблоны Мостов

Прокси, Декоратор, Адаптер и Шаблоны Мостов

 

1. Вступление

В этой статье мы собираемся сосредоточиться на шаблонах структурного проектирования в Java - и обсудить, что это такое, и некоторые фундаментальные различия между некоторыми из них.

2. Структурные шаблоны проектирования

Согласно «Банде четырех» (GoF) шаблоны проектирования можно разделить на три типа:

  1. Творения

  2. структурная

  3. поведенческий

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

3. Прокси шаблон

В этом шаблонеwe create an intermediary that acts as an interface to another resource, например, файл, соединение. Этот вторичный доступ обеспечивает суррогат для реального компонента и защищает его от базовой сложности.

Подробный пример шаблона можно найти в специальной публикации:The Proxy Pattern in Java.

Ключевые отличия:

  • Прокси-сервер предоставляет тот же интерфейс, что и объект, на который он ссылается, и никоим образом не изменяет данные; это в отличие от шаблонов Адаптер и Декоратор, которые изменяют и украшают функции уже существующих экземпляров соответственно.

  • Прокси-сервер обычно имеет информацию о реальном объекте во время самой компиляции, тогда как декоратор и адаптер вводятся во время выполнения, зная только фактический интерфейс объекта.

4. Декоратор Pattern

This pattern is useful for enhancing the behavior of an object. Для получения подробного обзора прочтите специализированное руководство здесь:Decorator Pattern in Java

Ключевые отличительные особенности:

  • Хотя шаблоны Proxy и Decorator имеют похожие структуры, они различаются по назначению; в то время как основная цель Proxy - облегчить использование или контролируемый доступ, Decorator накладывает дополнительные обязанности

  • Шаблоны Proxy и Adapter содержат ссылку на исходный объект.

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

5. Шаблон адаптера

The Adapter pattern is used for connecting two incompatible interfaces that otherwise cannot be connected directly. Адаптер оборачивает существующий класс новым интерфейсом, чтобы он стал совместимым с необходимым интерфейсом.

Подробное описание и реализацию смотрите в специальном посте:Adapter Pattern in Java

Основные различия между шаблонами адаптера и прокси:

  • В то время как прокси-сервер предоставляет тот же интерфейс, Adapter предоставляет другой интерфейс, совместимый с его клиентом.

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

6. Образец моста

The Bridge pattern is used to decouple an abstraction from its implementation, так что они могут изменяться независимо.

Это означает создание мостового интерфейса, который использует принципы ООП для разделения обязанностей на различные абстрактные классы.

Подробное описание и реализацию смотрите в специальном посте:Bridge Pattern in Java

Key Points of Differentiation:

  • Шаблон Bridge может быть реализован только до разработки приложения.

  • Позволяет абстракции и реализации изменяться независимо, тогда как паттерн адаптера позволяет несовместимым классам работать вместе

7. Заключение

В этой статье мы сфокусировались на Структурном шаблоне проектирования и различиях между некоторыми его типами.

Как всегда, полную реализацию этого руководства можно найти вover on Github.