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

来源:互联网 发布:自学java推荐书籍 编辑:程序博客网 时间:2024/05/22 17:31

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


对象适配器模式


C++示例代码如下:

#include "stdafx.h"#include <string>#include <iostream>using namespace std;/** CONTENTS: DESIGN PATTERN, OBJECT ADAPTER PATTERN*   AUTHOR: YAO H. WANG*     TIME: 2013-11-3 15:21:42*  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 Duck{private:Turkey *turkey;public:TurkeyAdapter(Turkey *turkey){this->turkey = turkey;}void quack(){turkey->gobble();}void fly(){for(int i = 0; i < 5; ++i)turkey->fly();}};//测试void testDuck(Duck *duck){duck->quack();duck->fly();}void main(){MallardDuck *duck = new MallardDuck();WildTurkey *turkey = new WildTurkey();Duck *turkeyAdapter = new TurkeyAdapter(turkey); 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;}


原创粉丝点击