我想在 C++ 中创建一个适配器类,但是我想适应的接口有几个非虚拟方法。我还能使用常规适配器模式吗?
#include <iostream>
using namespace std;
class NewInterface{
public:
int methodA(){ cout << "A\n"; }
virtual int methodB(){ cout << "B\n"; }
};
class OldInterface{
public:
int methodC(){ cout << "C\n"; }
int methodD(){ cout << "D\n"; }
};
class Old2NewAdapter: public NewInterface {
public:
Old2NewAdapter( OldInterface* a ){ adaptee = a; }
int methodA(){ return adaptee->methodC(); }
int methodB(){ return adaptee->methodD(); }
private:
OldInterface* adaptee;
};
int main( int argc, char** argv )
{
NewInterface* NI = new Old2NewAdapter( new OldInterface() );
NI->methodA();
NI->methodB();
return 0;
}
如果我有这个设置,输出将是“A D”而不是“C D”。
那么如何在不重写 NewInterface 以使所有方法都是虚拟的情况下使 OldInterface 适应 NewInterface 呢?