设计模式之十三:适配器模式(Adapter)
2015-06-07 12:41
429 查看
适配器模式:
将一个类的接口转换成另外一个期望的类的接口。适配器允许接口互不兼容的类一起工作。
简单的说,适配器模式就是增加一个中间层,记得有句话叫做软件开发中的一切问题都可以通过增加一个中间层来解决。
UML图如下:
注意Adapter和Adaptee的关系只是Adapter需要Adaptee中的某些功能,并且需要遵循Target的接口。Adapter与Target是继承层次的关系,与Adaptee是关联层次的关系。
主要包括:
Target:定义了一个客户端期望的与问题域相关的接口
Adapter:和Target的接口适配的接口。即重写Target中的接口
Adaptee:定义了一个需要适配的已经存在的接口。
Client:和Target中的接口一起合作的类。它需要Target中的接口所有不能直接使用Adaptee中的接口。
C++代码实现如下;
执行输出:
将一个类的接口转换成另外一个期望的类的接口。适配器允许接口互不兼容的类一起工作。
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; }
执行输出:
相关文章推荐
- BZOJ 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛( BFS )
- 使用JQuery实现全选的功能
- URL重写的几种实现方式的总结
- [c++]String字符串类的运算符重载
- apache+tomcat二级域名+url重写
- 运营开源公司的三个经验教训
- 让vs2008与vs2012同时打开同一个项目文件
- Apaceh配置虚拟主机步骤
- 单链表操作
- QLabel实现超链接,设置超链接颜色,去掉超链接下划线方法
- 最近学习的总结
- python并行计算的简单实现--pp
- 单链表操作 分类: 链表 2015-06-07 12:38 14人阅读 评论(0) 收藏
- 自定义拖拽框插件
- honeyd蜜罐配置和web监听脚本
- 用vs2008打开vs2012项目
- 深入理解C++中public、protected及private用法
- 仿flash运动框架
- nginx和Tomcat集成后发生的重定向问题分析和解决
- 关于JAVA回调函数机制