// 设计模式测试.cpp : 定义控制台应用程序的入口点。
// 适配器模式
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
#include <list>
using namespace std;
/*********************适配器模式火鸡伪装鸭子示例*************************************/
//鸭子基类
class Duck {
public:
virtual void quack() = 0;
virtual void fly() = 0;
};
class MallardDuck :public Duck {
public:
void quack() {
cout << "Quack" << endl;
}
void fly() {
cout << "I am Flying" << endl;
}
};
//火鸡基类
class Turkey {
public:
virtual void gobble()=0;
virtual void fly()=0;
};
class WildTurkey : public Turkey {
public:
void gobble() {
cout << "Gobble gobble" << endl;
}
void fly() {
cout << "I am flying a short distance" << endl;
}
};
//适配器
class TurkeyAdapter :public Duck {
Turkey *turkey;
public:
TurkeyAdapter(Turkey *turkey) {
this->turkey = turkey;
}
void quack() {
turkey->gobble();
}
void fly() {
for (size_t i = 0; i < 5; i++)
{
turkey->fly();
}
}
};
//主函数
int main()
{
MallardDuck *duck = new MallardDuck();
WildTurkey *turkey = new WildTurkey();
Duck *turkeyAdapter = new TurkeyAdapter(turkey);
cout << "The Turkey says ..." << endl;
turkey->gobble();
turkey->fly();
cout << "The Duck says ..." << endl;
duck->quack();
duck->fly();
cout << "The turkeyAdapter says ..." << endl;
turkeyAdapter->quack();
turkeyAdapter->fly();
system("Pause");
return 0;
}
C++:设计模式之适配器模式(例子)
最新推荐文章于 2024-06-18 09:38:17 发布