博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式入门,适配器模式,c++代码实现
阅读量:6407 次
发布时间:2019-06-23

本文共 1211 字,大约阅读时间需要 4 分钟。

// 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;

}

 

转载于:https://www.cnblogs.com/wangting235/p/7144745.html

你可能感兴趣的文章
EXT中的gridpanel自适应窗口的方法
查看>>
unary operator expected
查看>>
IPC之共享内存
查看>>
新加坡之旅
查看>>
IBM X3650 M3服务器上RAID配置实战
查看>>
Mysql DBA 高级运维学习之路-索引知识及创建索引的多种方法实战
查看>>
go语言与java nio通信,解析命令调用上下文拉起ffmpeg,并引入livego做的简单流媒体服务器...
查看>>
JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)
查看>>
【数据结构】线性表(一):顺序列表
查看>>
利用Mallet工具自动挖掘文本Topic
查看>>
Windows下oracle打补丁步骤
查看>>
Python教程(一)Python简介
查看>>
asp.net forms认证
查看>>
一帧图像的两种显示器建模方式
查看>>
Hadoop 公平调度器算法调度解析
查看>>
Linux Foundation(笔记)
查看>>
Java学习第二十五天
查看>>
vim配置
查看>>
ubuntu 把软件源修改为国内源和更新
查看>>
随机产生四则运算,导入导出文件
查看>>