// test07.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
//设计模式第7章 适配器模式class Duck
{ public: virtual void quack() = 0; virtual void fly() = 0;};class MallardDuck : public Duck
{ public: void quack() { printf("Quack\n"); }void fly()
{ printf("I'm flying\n"); }};class Turkey
{ public: virtual void gobble() = 0; virtual void fly() = 0;};class WildTurkey : public Turkey
{ public: void gobble() { printf("Gobble gobble\n"); }void fly()
{ printf("I'm flying a short distance\n"); }};class TurkeyAdapter : public Duck
{ Turkey* turkey;public: TurkeyAdapter(Turkey* in_turkey) { turkey = in_turkey; }void quack()
{ turkey->gobble(); }void fly()
{ for (int i = 0; i<5; i++) { turkey->fly(); } }};void testDuck(Duck* duck){ duck->quack(); duck->fly();};int _tmain(int argc, _TCHAR* argv[])
{MallardDuck* duck = new MallardDuck();
WildTurkey* turkey = new WildTurkey(); Duck* turkeyAdapter = new TurkeyAdapter(turkey);printf("the turkey says...\n");
turkey->gobble(); turkey->fly();printf("\nthe duck says...\n");
testDuck(duck);printf("\nthe turkeyAdapter says...\n");
testDuck(turkeyAdapter);return 0;
}