Задать вопрос
@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();
    }
};
  • Вопрос задан
  • 198 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Bonce
Да
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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