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 装饰者模式 星巴克咖啡 饮料 总结 如果说策略模式是通过组合实现弹性,那么装饰者模式就是通过继承来实现,在实现的同时,客户基本感觉不到使用了装饰者模式 ...
随机推荐
- How good software makes us stupid?
How good software makes us stupid? 科技是怎样让人变傻的? People assume that iPhones, laptops and Netflix are e ...
- ubuntu下查看文件md5
终端输入md5sum --help: md5sum --help用法:md5sum [选项]... [文件]...显示或检查 MD5(128-bit) 校验和.若没有文件选项,或者文件处为" ...
- Linux内核之内存管理(4)--缺页处理程序
本文主要解说缺页处理程序,凝视足够具体,不再解释. //以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址add ...
- Hdu 5001 Walk 概率dp
Walk Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5001 Desc ...
- 并查集类的c++封装,比較union_find algorithm四种实现方法之间的性能区别
问题描写叙述: 在计算机科学中,并查集是一种树型的数据结构,其保持着用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.有一个联合-查找算法(union-find algorithm ...
- [Practical Git] Diagnose which commit broke something with git bisect
Sometimes you find a bug in your project that has been around for a while without being noticed; it ...
- android125 zhihuibeijing 缓存
## 三级缓存 ## - 内存缓存, 优先加载, 速度最快 - 本地缓存(内存卡), 次优先加载, 速度快 - 网络缓存, 不优先加载, 速度慢,浪费流量 package com.itheima.zh ...
- Linux性能及调优指南(翻译)之Linux内存架构
http://blog.csdn.net/ljianhui/article/details/46734115
- mvc_ajax_for form
在上一篇介绍MVC中的Ajax实现方法的时候,曾经提到了除了使用Ajax HTML Helper方式来实现之外,Jquery也是实现Ajax的另外一种方案. 通过get方法实现AJax请求 View ...
- C#_delegate - Pair<T> 静态绑定
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...