设计模式之十三:适配器模式(Adapter)
适配器模式:
将一个类的接口转换成另外一个期望的类的接口。适配器同意接口互不兼容的类一起工作。
Convert the interface of a class into another interface clients expect.
Adapter lets classes work together that couldn't otherwise because of
incompatible interfaces.
简单的说。适配器模式就是添加一个中间层,记得有句话叫做软件开发中的一切问题都能够通过添加一个中间层来解决。
UML图例如以下:
注意Adapter和Adaptee的关系仅仅是Adapter须要Adaptee中的某些功能,而且须要遵循Target的接口。
Adapter与Target是继承层次的关系。与Adaptee是关联层次的关系。
主要包含:
- Target:定义了一个客户端期望的与问题域相关的接口
- Adapter:和Target的接口适配的接口。即重写Target中的接口
- Adaptee:定义了一个须要适配的已经存在的接口。
- Client:和Target中的接口一起合作的类。它须要Target中的接口全部不能直接使用Adaptee中的接口。
C++代码实现例如以下。
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
class Adaptee
{
public:
void specialRequest()
{
std::cout<<"call specialRequest"<<std::endl;
}
};
class Target
{
public:
virtual void request()
{
std::cout<<"call request"<<std::endl;
}
};
class Adapter:public Target
{
public:
Adapter()
{
}
Adapter(Adaptee * a)
{
adaptee=a;
}
void request()
{
adaptee->specialRequest();
}
private:
Adaptee * adaptee;
};
int main()
{
Adaptee * ape=new Adaptee();
Target * adapter=new Adapter(ape);
adapter->request();
return 0;
}
运行输出:
设计模式之十三:适配器模式(Adapter)的更多相关文章
- 设计模式 结构型 - 适配器模式 Adapter
Adapter(适配器模式) ---- 加个“适配器”以便于复用 将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景 如果 ...
- 设计模式系列之适配器模式(Adapter Pattern)——不兼容结构的协调
模式概述 模式定义 模式结构图 模式伪代码 类适配器,双向适配器,缺省适配器 类适配器 双向适配器 缺省适配器 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 主要优点 主要缺点 适 ...
- IOS设计模式浅析之适配器模式(Adapter)
引言 在项目开发中,有时候会遇到这样的一种情景:需要使用以前开发的“一些现存的对象”,但是新环境中要求的接口是这些现存对象所不满足的.怎样应对这种迁移的需求?使得可以复用这些对象,以满足新的应用环境, ...
- 《JAVA设计模式》之适配器模式(Adapter)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- 设计模式(五)适配器模式Adapter(结构型)
设计模式(五)适配器模式Adapter(结构型) 1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相 ...
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- 8.3 GOF设计模式二: 适配器模式 Adapter
GOF设计模式二: 适配器模式 Adapter 为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式 SingleTon的三个关键点 ...
- 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)
怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...
- 二十四种设计模式:适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...
- 设计模式 - 适配器模式(adapter pattern) 具体解释
适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...
随机推荐
- bzoj2668
对于这种题很容易看出是费用流吧…… 但这道题不容易建模: 首先是怎么表示目标状态和其实状态,看起来有黑有白很复杂 但实际上,不难发现,白色格子没什么用,起决定作用的是黑格子 也就是我们可以把问题简化: ...
- UVa 11054 Wine trading in Gergovia
题意: 直线上有n个等距的酒庄,每个酒庄对酒的需求量为ai(正数说明需要买酒,负数需要卖酒),而且保证所有的酒庄供需平衡. 搬运x个单位的酒到相邻的酒庄需要x个劳动力,求要使所有酒庄供需平衡最少需要多 ...
- 对 Azure 虚拟网络网关的改进
YU-SHUN WANG Azure 网络高级项目经理 在 2014 年欧洲 TechEd 大会上,我们宣布了对Azure 虚拟网络网关的多项改进: 1. 高性能网关 SKU 2. Azure 虚 ...
- SharePoint 2010 master page 控件介绍(1)
转:http://blog.csdn.net/lgm97/article/details/6409204 以下所有的内容都是根据Randy Drisgill (MVP SharePoint Serve ...
- 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画
之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...
- MVC的EF编辑,不用查询直接修改
EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态: 一.通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值:实体对象被修改的属性 在 ...
- 如何获取android app的Activity
方法一 如有你有待测项目的源码,那么直接查看源码就好.如果没有,那么请联系有源码的同学,这是推荐方法. 方法二 直接把apk后缀改为zip格式,打开压缩包后再打开AndroidManifest.x ...
- WCF测试工具,post经验
以前使用WCF的post的时候总是不知道怎么传值,需要注意2方面 1.头可以用Json或者是xml来传值 Content-Type: application/json; charset=utf-8 2 ...
- microsoft的罗马帝国——浪潮之巅
其实开始读微软的这篇已经比较久了,从来学校的前一天晚上等车的时候就开始读了,直到今天才看完.嗯,微软的确是个帝国. 那就从头开始讲把,关于帝国的传奇都是比较长的故事呢.至于我的叙述水平和我的知识水平都 ...
- 关于SQL语言,查询关联多张表出现的,无法返回空值的问题。
用外连接: SELECT * from PERempms left outer join PERPROMSon PERPROMS.BRANCH =PERempms.BRANCH left outer ...