适配器模式是指当存在A和B两个类时,B类的接口不同于A,但又希望在调用时与A相同的代码同时可以调用B的代码;便可以采用适配器模式,是一种对于已经存在的类的补救办法,事项两个类的融合;
因此构造器的实现至少要具备三个类,已经有的类A、B,同时要新写一个类C用于完成B接口到A接口的转化;
#include <iostream>
#include <string>
class ClassA
{
public:
ClassA(){};
~ClassA(){};
virtual std::string GetName(){
return _Name;
};
void SetName(std::string Name)
{
_Name = Name;
};
private:
std::string _Name;
};
class ClassB
{
public:
ClassB(){};
~ClassB(){};
virtual std::string GetBName(){
return _Name;
};
void SetBName(std::string Name)
{
_Name = Name;
};
private:
std::string _Name;
};
class ClassAdatptorC:public ClassA
{
public:
ClassAdatptorC(ClassB * CB){
_C_B = CB;
};
~ClassAdatptorC(){};
virtual std::string GetName(){
return _C_B->GetBName();
};
private:
ClassB * _C_B;
};
代码调用:
ClassB B;
B.SetBName(("张三"));
ClassA * A = new ClassAdatptorC(&B);
std::cout << A->GetName() << std::endl;
适配器相对简单,优点也相对明显,就是不需要更改源代码只需要增加一个新的类便可以实现调用;