class AbstractTextFormater {
public:
virtual ~AbstractTextFormater() {};
virtual void format() = 0;
};
class TextFormater {
public:
void format() {
//...старая реализация
};
};
class NewTextFormater {
public:
virtual ~NewTextFormater() {};
void new_format() {
//...новая реализация
};
};
class AdapterNewTextFormater : public AbstractTextFormater {
public:
AdapterNewTextFormater(NewTextFormater* other_textformater): textformater(other_textformater) {};
void format() {
this->textformater->new_format();
}
protected:
NewTextFormater* textformater;
};
class TextFormater {
public:
void format() {
//...старая реализация
};
};
class NewTextFormater {
public:
void new_format() {
//...новая реализация
};
};
class AdapterNewTextFormater : public TextFormater {
protected:
NewTextFormater *new_textformater;
public:
AdapterNewTextFormater(NewTextFormater *adaptee_textformater): new_textformater(adaptee_textformater) {};
void format() {
this->new_textformater->new_format();
}
};
А с закрытым наследованием примерно также реализуется? (по структуре на картинке)