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

设计模式入门,适配器模式,c++代码实现的更多相关文章

  1. 设计模式入门,观察者模式,c++代码实现

    // test02.cpp : Defines the entry point for the console application.////设计模式第2章 观察者模式#include " ...

  2. php设计模式之适配器模式实例代码

    <?php header("Content-type:text/html;charset=utf-8"); // 适配器模式 /** * 查看天气接口 */ class Ti ...

  3. 设计模式入门,策略模式,c++代码实现

    // test01.cpp : Defines the entry point for the console application.////第一章,设计模式入门,策略模式#include &quo ...

  4. 每天一个设计模式-3 适配器模式(Adapteer)

    每天一个设计模式-3 适配器模式(Adapteer) 1.现实中的情况 旧式电脑的硬盘是串口的,直接与硬盘连接,新硬盘是并口的,显然新硬盘不能直接连在电脑上,于是就有了转接线.好了,今天的学习主题出来 ...

  5. Head First 设计模式之适配器模式与外观模式

    Head First设计模式之适配器模式与外观模式 前言: 之前讲过装饰者模式,将对象包装起来并赋予新的职责,这一章我们也会将对象进行包装,只不过是让它们看起来不像自己而像是别的东西.这样就可以在设计 ...

  6. 基于java的设计模式入门(1)——为什么要学习设计模式

    大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ...

  7. C#设计模式(7)——适配器模式(Adapter Pattern)

    一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...

  8. Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)

    1.组合和继承之间的选择 组合和继承都允许在新的类中放置子对象,组合是显式的这样做,而继承则是隐式的做. 组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形.即在新类中嵌入某个对象,让其实 ...

  9. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

    原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...

  10. C#设计模式之七适配器模式(Adapter)【结构型】

    一.引言   从今天开始我们开始讲[结构型]设计模式,[结构型]设计模式有如下几种:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.[创建型]的设计模式解决的是对象创建的问题, ...

随机推荐

  1. phpStorm配置SVN与FTP数据传输

    公司php开发时候,需要搭建环境,自己捋了下思路,公司代码放在SVN服务器上,需要在本机安装TortoiseSVN软件,将代码下载到本机,在本机上调试程序,修改代码,修改的代码再上传到SVN.之后通过 ...

  2. SpringData JPA复合主键

    上一篇博客简单介绍了SpringData JPA实现简单的CRUD,分页与多条件的排序,那里的主键类型是Long,有时我们会遇到主键不是一个的,复合主键,经过调研如下.确定一个人,不能只根据他的姓名来 ...

  3. 结合业务,精炼SQL

    现代网站,性能的瓶颈都围绕着数据库的性能来谈.数据库是存储的核心部件,在日益增长的流量中会凸显数据库的性能瓶颈.从<淘宝技术十年>书中来看,淘宝发展历程中从MYSQL换成了ORACLE又换 ...

  4. 【转载】Analysis Service Tabular Model #002 Analysis services 的结构:一种产品 两个模型

    Analysis Service 2012 Architecture – One Product, Two Models 在之前SQL Server 2008 R2 版本中的分析服务实际上只有一个版本 ...

  5. Java导包问题

    eclipse中,导包只可以导到当前层,不可以再导入包里面的包中的类 包目录如下: 导包如下 package def; import abc.*; public class CCC { public ...

  6. mysql.sock文件丢失被删除解决方法

    Mysql有两种连接方式: (1),TCP/IP (2),socket 对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用. 例如你无须定义连接host ...

  7. JDK下载安装以及环境变量的配置

    JDK是Java Development Kit 的缩写,是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序. 一.JDK的下载 这里以Oracle官网下载为例 1. ...

  8. Mac 10.12安装hosts快速切换工SwitchHosts!

    说明:支持在线本地. 下载: (链接: https://pan.baidu.com/s/1boDw67d 密码: uy6g)

  9. (转)Mysql数据库主从心得整理

    Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...

  10. lambda modern C++

    Lambda expressions (since C++11) Syntax   [ captures ] <tparams>(optional)(c++20) ( params ) s ...