2024-03-19 02:45:09 +08:00

80 lines
1011 B
C++

#include <iostream>
using namespace std;
class Encode1
{
public:
void print()
{
cout << "编码1\n";
}
};
class Encode2
{
public:
void printf()
{
cout << "编码2\n";
}
};
class Encrypt
{
public:
virtual void Encode() = 0;
};
class Encode1Adapter : public Encrypt
{
private:
Encode1 *encode;
public:
Encode1Adapter(Encode1 *e)
{
encode = e;
}
void Encode()
{
encode->print();
}
};
class ClassEncode2Adapter : public Encode2, public Encrypt
{
public:
void Encode()
{
this->printf();
}
};
class User
{
private:
Encrypt *encrypt;
public:
User(Encrypt *e)
{
this->encrypt = e;
}
void Use()
{
this->encrypt->Encode();
}
};
int main()
{
//对象适配器
Encrypt *e = new Encode1Adapter(new Encode1());
User *u = new User(e);
u->Use();
//类适配器
e = new ClassEncode2Adapter();
u = new User(e);
u->Use();
return 0;
}