duck.h

 #ifndef _DUCK_H_
#define _DUCK_H_ class DUCK {
public:
virtual void quack() = ;
virtual void fly() = ;
};
#endif

mallard_duck.h

 #ifndef _MALLARD_DUCK_H_
#define _MALLARD_DUCK_H_ #include "duck.h"
#include <iostream> class MALLARD_DUCK : public DUCK {
public:
void quack() { std::cout << "mallard duck quack" << std::endl; }
void fly() { std::cout << "mallard duck fly" << std::endl; }
};
#endif

turkey.h

 #ifndef _TURKEY_H_
#define _TURKEY_H_ #include <iostream> class TURKEY {
public:
void gobble() { std::cout << "turkey gobble" << std::endl; }
void fly() { std::cout << "turkey fly" << std::endl; }
}; #endif

turkey_adapter.h

 #ifndef _TURKEY_ADAPTER_H_
#define _TURKEY_ADAPTER_H_ #include "turkey.h"
class TURKEY_ADAPTER : public DUCK{
private:
TURKEY &turkey;
public:
TURKEY_ADAPTER( TURKEY &_turkey) : turkey(_turkey) {}
void quack() { turkey.gobble(); }
void fly() {
for ( int i = ; i < ; i++ ) {
turkey.fly();
}
}
};
#endif

main.cpp

 #include "mallard_duck.h"
#include "turkey_adapter.h" void test_duck( DUCK &p ) {
p.quack();
p.fly();
} int main() {
MALLARD_DUCK mallard_duck;
test_duck( mallard_duck ); TURKEY turkey;
TURKEY_ADAPTER turkey_adapter(turkey);
test_duck( turkey_adapter );
}

Headfirst设计模式的C++实现——适配器(Adapter)的更多相关文章

  1. Ruby设计模式透析之 —— 适配器(Adapter)

    转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/9400153 此为Java设计模式透析的拷贝版,专门为Ruby爱好者提供的,不熟悉R ...

  2. 设计模式C++描述----06.适配器(Adapter)模式

    一. 定义 适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. Adapter 模式的两种类别:类模式和对象模式. 二. 举例说明 实际中 ...

  3. Java设计模式透析之 —— 适配器(Adapter)

    转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/9400141 今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务 ...

  4. 设计模式--适配器(Adapter)模式

    今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)&g ...

  5. 设计模式学习心得<适配器 Adapter>

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接 ...

  6. headfirst设计模式(8)—适配器模式与外观模式

    前言 这一章主要讲2个模式,一个是,适配器模式(负责将一个类的接口适配成用户所期待的),另外一个是外观模式(为子系统提供一个共同的对外接口),看完的第一反应是,为什么要把它们两放在同一章,难道它们有什 ...

  7. 设计模式(五)适配器模式Adapter(结构型)

      设计模式(五)适配器模式Adapter(结构型) 1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相 ...

  8. 安卓开发笔记——打造万能适配器(Adapter)

    为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...

  9. HeadFirst设计模式<2>

    HeadFirst设计模式<2> 1 装饰者模式 星巴克咖啡 饮料 总结 如果说策略模式是通过组合实现弹性,那么装饰者模式就是通过继承来实现,在实现的同时,客户基本感觉不到使用了装饰者模式 ...

随机推荐

  1. struts2—拦截器

    在Struts2中,如果用户没有指定执行哪些拦截器,struts2有一个默认执行的栈,defaultStack; 一旦如果用户有指定执行哪些拦截器,默认的拦截器栈就不会被执行 拦截器配置举例(stru ...

  2. Android v4 包和v7包问题

    昨天新建了一个android项目,加入了一个bootstrap的外部依赖和一个底部导航栏的外部依赖.结果jj 了,老是提醒我v4包v7包冲突: 事实是这样的,首先我的底部导航依赖库里面有一个v4包,那 ...

  3. 关于STM32下载问题的简单理解

    首先STM32分为两种下载方式1.ISP(IN-SYSTEM-PROGRAMMING在线编程)  2.JTAG 这里简单谈谈对ISP下载的理解: ISP下载是51单片机,STM等单片机比较常见的一种下 ...

  4. CAS Proxy 的相关文章

    cas代理模式的原理及配置 http://my.oschina.net/mashiguang/blog/69312 剖析CAS Proxy的设计原理 http://www.blogjava.net/s ...

  5. 理解 auto_ptr<T>

    1.auto_ptr<T>解决什么问题? 在堆上获取的资源,客户可能会忘记delete,或者由于异常没有执行到delete,导致资源泄漏.在栈上分配的对象,有个特点,不论出现什么情况,超出 ...

  6. 从零开始学android开发-四大组件之一 Activity

    1.Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的, ...

  7. 兼容:判断 iframe 是否加载完成

    判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似 var iframe = document.createElement("iframe ...

  8. 微软雅黑字体IE6 opacity改变,字体会变样子

    微软雅黑字体IE6 opacity改变,字体会变样子,换个字体就好了

  9. php动态调用方法_sux

    <form  action=""> <input type="hidden" name="mod" id="mo ...

  10. aggregation 详解2(metrics aggregations)

    概述 权值聚合类型从需要聚合的文档中取一个值(value)来计算文档的相应权值(比如该值在这些文档中的max.sum等). 用于计算的值(value)可以是文档的字段(field),也可以是脚本(sc ...