Задать вопрос
@tujhan
Начинающий программист

Паттерн Адаптер/Adapter должен выглядеть так?

Попытался реализовать паттерн адаптер с композицией объектов и с наследованием, получилось примерно так:
Вопрос заключается в том, правильно ли я реализовал этот паттерн и, если нет, то в чем ошибка или неточность, подскажите пожалуйста?
(реализация с композицией объектов)
5d541bae7288b794329331.png
class AbstractTarget {
public:
    virtual ~AbstractTarget() {};
    virtual void Request() = 0;
};

class ConcreteTarget : public AbstractTarget {
public:
    void Request() {
        //...реализация
    }
};

class AbstractAdaptee {
public:
    virtual ~AbstractAdaptee() {};
    virtual void SpecificRequest() = 0;
};

class ConcreteAdaptee : public AbstractAdaptee {
public:
    void SpecificRequest() {
        //...адаптируемая реализация
    }
};

class Adapter : public AbstractTarget {
public:
    Adapter(AbstractAdaptee* other_adaptee): adaptee(other_adaptee) {};
    void Request() {
        this->adaptee->SpecificRequest();
    }
protected:
    AbstractAdaptee* adaptee;
};


(реализация с наследованием)
5d541bd4ac014765922657.png
class AbstractTarget {
public:
    virtual ~AbstractTarget() {};
    virtual void Request() = 0;
};

class ConcreteTarget : public AbstractTarget {
public:
    void Request() {
        //...реализация
    }
};

class AbstractAdaptee {
public:
    virtual ~AbstractAdaptee() {};
    virtual void SpecificRequest() = 0;
};

class ConcreteAdaptee : public AbstractAdaptee {
public:
    void SpecificRequest() {
        //...адаптируемая реализация
    }
};

class Adapter: public AbstractTarget, private AbstractAdaptee {
public:
    void Request() {
        SpecificRequest();
    }
};
  • Вопрос задан
  • 200 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Мидл разработчик С++
    4 месяца
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Bonce
Да
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы