Шаблон проектирования адаптера используется для преобразования интерфейса класса (Target) в другой интерфейс (Adaptee), ожидаемый клиентами. Адаптер позволяет несовместимым классам работать вместе, что не могло бы быть иначе из-за их несовместимых интерфейсов.
Шаблон адаптера может быть реализован двумя способами: по Наследование (версия класса шаблона адаптера) и по композиции (версия объекта шаблона адаптера).
Мой вопрос касается версии класса шаблона адаптера, который реализован с использованием наследования.
Вот пример редактора чертежей:
interface Shape
{
Rectangle BoundingBox();
Manipulator CreateManipulator();
}
class TextView
{
public TextView() { }
public Point GetOrigin() { }
public int GetWidth() { }
public int GetHeight() { }
}
interface Shape
{
Rectangle BoundingBox();
Manipulator CreateManipulator();
}
class TextView
{
public TextView() { }
public Point GetOrigin() { }
public int GetWidth() { }
public int GetHeight() { }
}
Мы хотели бы повторно использовать класс TextView для реализации TextShape, но интерфейсы разные, и поэтому объекты TextView и Shape не могут использоваться взаимозаменяемо.
Если нужно изменить Класс TextView для соответствия интерфейсу формы? Возможно, нет.
TextShape может адаптировать интерфейс TextView к интерфейсу фигуры одним из двух способов: