设计模式:适配器模式(7.1.2)C++版

来源:互联网 发布:c4d r18 for mac迅雷 编辑:程序博客网 时间:2024/06/05 15:09

适配器模式:将一个类的接口,转换成用户期望的接口


类适配器模式


C++示例代码如下:

#include "stdafx.h"#include <string>#include <iostream>using namespace std;/** CONTENTS: DESIGN PATTERN, CLASS ADAPTER PATTERN*   AUTHOR: YAO H. WANG*     TIME: 2013-11-3 16:35:17*  EDITION: 1*     LINK: http://blog.csdn.net/yaohwang  ** ALL RIGHTS RESERVED!*///鸭子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'm 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'm flying a short distance" << endl;}};//适配器class TurkeyAdapter: public MallardDuck, public WildTurkey{public:void quack(){gobble();}//void MallardDuck::fly()void Duck::fly(){for(int i = 0; i < 5; ++i)WildTurkey::fly();}};//测试void testDuck(Duck *duck){duck->quack();duck->fly();}void main(){MallardDuck *duck = new MallardDuck();WildTurkey *turkey = new WildTurkey();Duck *turkeyAdapter = new TurkeyAdapter(); cout << "The Turkey says..." << endl;turkey->gobble();turkey->fly();cout << "\nThe Duck says..." << endl;testDuck(duck);cout << "\nThe TurkeyAdapter says..." << endl;testDuck(turkeyAdapter);delete duck;delete turkey;delete turkeyAdapter;}