今天来学习一下适配器模式,下面看一下C++的实现。
//适配器模式
class Player
{
public:
virtual void Attack()
{
return;
}
virtual void Defense()
{
return;
}
string s_name;
};
class Forwards : public Player
{
public:
Forwards(string name)
{
s_name = name;
}
void Attack()
{
cout << s_name << "," << "Attack" << endl;
}
void Defense()
{
cout << s_name << "," << "Defense" << endl;
}
};
class ForwardCentor
{
public:
void jingong()
{
cout << "进攻" << endl;
}
void fangshou()
{
cout << "防守" << endl;
}
};
class Translator : public Player
{
public:
Translator(string name)
{
wjzf = new ForwardCentor();
s_name = name;
}
void Attack()
{
cout << s_name;
wjzf->jingong();
}
void Defense()
{
cout << s_name ;
wjzf->fangshou();
}
private:
ForwardCentor *wjzf;
};
int main()
{
Player *b = new Forwards("kebi");
b->Attack();
Player *ym = new Translator("yaoming");
ym->Attack();
delete b;
delete ym;
return 0;
}
适配器模式的定义:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
上述代码说的是姚明和科比在一起打篮球,由于语言不通,所以不能直接交流,这时候就需要一个翻译。这个翻译就相当于适配器的功能,由翻译告诉姚明将要执行什么动作。ForwardCentor中的方法都是中文的,翻译类能看懂,然后由翻译类进行调用,这样就实现了适配器的功能。
使用场景:两个类所作的事情相同或相似,但是具有不同的接口时,且双方都不太容易修改的时候就进行适配