Headfirst设计模式的C++实现——适配器(Adapter)
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)的更多相关文章
- Ruby设计模式透析之 —— 适配器(Adapter)
转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/9400153 此为Java设计模式透析的拷贝版,专门为Ruby爱好者提供的,不熟悉R ...
- 设计模式C++描述----06.适配器(Adapter)模式
一. 定义 适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. Adapter 模式的两种类别:类模式和对象模式. 二. 举例说明 实际中 ...
- Java设计模式透析之 —— 适配器(Adapter)
转载请注明出处:http://blog.csdn.net/sinyu890807/article/details/9400141 今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务 ...
- 设计模式--适配器(Adapter)模式
今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)&g ...
- 设计模式学习心得<适配器 Adapter>
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接 ...
- headfirst设计模式(8)—适配器模式与外观模式
前言 这一章主要讲2个模式,一个是,适配器模式(负责将一个类的接口适配成用户所期待的),另外一个是外观模式(为子系统提供一个共同的对外接口),看完的第一反应是,为什么要把它们两放在同一章,难道它们有什 ...
- 设计模式(五)适配器模式Adapter(结构型)
设计模式(五)适配器模式Adapter(结构型) 1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相 ...
- 安卓开发笔记——打造万能适配器(Adapter)
为什么要打造万能适配器? 在安卓开发中,用到ListView和GridView的地方实在是太多了,系统默认给我们提供的适配器(ArrayAdapter,SimpleAdapter)经常不能满足我们的需 ...
- HeadFirst设计模式<2>
HeadFirst设计模式<2> 1 装饰者模式 星巴克咖啡 饮料 总结 如果说策略模式是通过组合实现弹性,那么装饰者模式就是通过继承来实现,在实现的同时,客户基本感觉不到使用了装饰者模式 ...
随机推荐
- zabbix 3.0 安装
zabbix3.0安装注意: 1.PHP要5.4版本以上 2.防火墙关闭 3.selinux关闭 注:本操作系统为centos 6.5 X86 操作步骤 一.安装PHP 添加 epel 源 # r ...
- mysql之数据库备份与恢复
备份与恢复 系统运行中,增量备份与整体备份. 例如:每周日整体备份一次,周一到周六只备份当天. 如果周五的数据出了问题,可以用周日的整体+周一.周二.周三.周四来恢复. 备份的工具: 有第三方的收费备 ...
- Android开发环境中的概念和工具介绍
最近学习Android开发,以前使用C/C++多一些,现在再补点Java知识,不管是哪种语言,都不过是一种工具而已,真的学起来,大同小异,无谓优劣.学习Android编程肯定是要先从环境搭建开始,无论 ...
- 跟Android初学者分享几点经验
刚学Android开发的人肯定想知道过来人是怎样入门的,有哪些经验,怎样能少走弯路.本文就跟大家分享一位Android开发者的入门经验,写的条理很清晰,真正讲出了自己的学习过程,尽管每个人的学习方法和 ...
- Android 获取手机SIM资料详解
TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...
- innobackupex --slave-info参数的含义和适用场景
http://blog.itpub.net/28916011/viewspace-1969135/ 我有个问题一直没弄明白,就是innobackupex里面的--slave-info这个参 ...
- memcached client --ref
Clients Client API's / libraries Updated Jul 14, 2012 by dorma...@rydia.net ref:https://code.google. ...
- 谈谈MVVM和链式网络请求架构
前言 前一段时间一直在学习iOS的架构.为什么呢? 公司的架构一直是MVC,当我们正式上线的时候,项目已经有了超十万行代码.主要的VC一般都有2000行代码以上. 关键是,目前版本我们只做了三分之一的 ...
- 将WSDL文件生成的Java文件
- Android(java)学习笔记129:Tab标签的使用
1.案例1---TabProject (1)首先是main.xml文件: <?xml version="1.0" encoding="utf-8"?> ...