Паттерн проектирования Адаптер (Adapter) на языке C#

29.03.2018

Паттерн (шаблон) проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых структурных паттернов — Адаптер (Adapter).

Как я уже писал ранее, существует три вида паттернов проектирования:

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

Адаптер (Adapter) – это структурный паттерн, который позволяет адаптировать интерфейс класса в соответствии с требованиями системы. То есть, адаптер — это своеобразная прослойка между классами, приводящая интерфейс одного класса к используемому в другом.

Давайте рассмотрим диаграмму паттерна Адаптер.

Адаптер (Adapter)
Адаптер (Adapter)
  • Target — целевой интерфейс, к которому нужно преобразовать интерфейс существующих классов;
  • Adaptee — существующий класс, чей интерфейс нужно преобразовать;
  • Adapter — класс-адаптер, который преобразует интерфейс адаптируемого класса к целевому;
  • Client — клиенты нового интерфейса, которые работают с адаптированными классами полиморфным образом.

Рассмотрим основную логику работы паттерна Адаптер. Предположим, что мы являемся разработчиками совершенно новой, революционной информационной системы работы с кассовыми аппаратами. Будучи очень умными и порядочными программистами, мы разработали интуитивно понятный интерфейс для работы с кассовыми аппаратами нашего собственного производства. Но стремясь к универсальности нашего программного обеспечения перед нами встала задача дополнительно использовать кассовые аппараты сторонних производителей, которые предоставляют совершенно другой интерфейс. Мы не имеем доступа и не можем изменить сторонний интерфейс, но и не хотим изменять свой собственный. Именно в таких ситуациях приходит на помощь адаптер, который будет служить своеобразным переводчиком между нашей системой и интерфейсом стороннего кассового аппарата.

Продолжение, с деталями реализации на языке C# доступно по ссылке https://shwanoff.ru/adapter/