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; } }
运行结果如下:
相关文章推荐
- 设计模式学习—适配器模式(Adapter Design Pattern)
- Design Pattern【5】适配器模式
- Design Pattern:适配器模式
- java设计模式之适配器模式
- 适配器模式之门面模式
- java设计模式,适配器模式
- 6、适配器模式(Adapter)
- 适配器模式
- Java设计模式学习05——适配器模式
- c++ 设计模式之适配器模式
- 适配器模式
- PHP设计模式之适配器模式
- PHP 适配器模式
- 适配器模式和装饰模式
- Java中的适配器模式
- 适配器模式
- Java设计模式之六--适配器模式
- 2016.12.31 学习日记-适配器模式
- java-Design Pattern概要
- 适配器模式