您的位置:首页 > 编程语言 > C语言/C++

Design Pattern之适配器模式

2018-03-04 21:27 183 查看
适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在使用一个已经存在的类时,如果它的接口,也就是方法和你的要求不同时,就应该考虑用适配器模式。

下面是适配器的结构图:



代码如下:

class Player
{
protected:
string m_strName;
public:
Player(string& __n)
{
m_strName = __n;
}

virtual ~Player() {}

virtual void Attack() {}
virtual void Defense() {}
};


class Forwards: public Player
{
public:
Forwards(string& __n) : Player(__n)
{

}

~Forwards()
{

}

virtual void Attack()
{
printf("Forwards %s Attack\n", m_strName.c_str());
}

virtual void Defense()
{
printf("Forwards %s Defense\n", m_strName.c_str());
}
};


class Guards : public Player
{
public:
Guards(string& __n) : Player(__n)
{

}

~Guards()
{

}

virtual void Attack()
{
printf("Guards %s Attack\n", m_strName.c_str());
}

virtual void Defense()
{
printf("Guards %s Defense\n", m_strName.c_str());
}
};


class Translator : public Player
{
public:
Translator(string& __n) : Player(__n) {}
~Translator() {}
virtual void Attack()
{
center.Attack();
}

virtual void Defense()
{
center.Defense();
}
private:
ForeignCenter center;
};


int _tmain(int _tmain(int argc, TCHAR* argv[]))
{
string name = "Batier";
Player *pForward = new Forwards(name);
pForward->Attack();

name = "MaiDi";
Player *pGuard = new Guards(name);
pGuard->Attack();

name = "YaoMing";
Player *pCenter = new Translator(name);
pCenter->Attack();
pCenter->Defense();

if (pForward)
{
delete pForward;
pForward = NULL;
}

if (pGuard)
{
delete pGuard;
pGuard = NULL;
}

if (pCenter)
{
delete pCenter;
pCenter = NULL;
}

}


运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息