首页
|
编程语言
|
网站建设
|
游戏天堂
|
冲浪宝典
|
网络安全
|
操作系统
|
软件时空
|
硬件指南
|
病毒相关
|
IT 认证
软讯网络
>
编程语言
>
C/C++
> 常见设计模式的解析和实现(六)-Adapt模式
【标 题】:常见设计模式的解析和实现(六)-Adapt模式
【关键字】:
-Adapt
【来 源】:http://www.cppblog.com/converse/archive/2006/07/23/10373.html
常见设计模式的解析和实现(六)-Adapt模式
C++博客 - 创系的技术博客 - 常见设计模式的解析和实现(六)-Adapt模式
创系的技术博客
有勇气来改变可以改变的事情,有胸怀来接受不可改变的事情,有智慧来分辨两者的不同。
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2006年7月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
统计
随笔 - 34
文章 - 0
评论 - 45
引用 - 0
公告
清风明月环绕,任凭何人笑傲。 星辰卷银河,莫问婵娟人渺。 知晓,知晓,看尽云山多少。
留言簿(0)
给我留言
查看公开留言
查看私人留言
最新随笔
1.?常见设计模式的解析和实现(八)-Composite模式
2.?常见设计模式的解析和实现(七)-Bridge模式
3.?常见设计模式的解析和实现(六)-Adapt模式
4.?常见设计模式的解析和实现(五)-Singleton模式
5.?常见设计模式的解析和实现(四)-Prototype模式
6.?常见设计模式的解析和实现(三)-Builder模式
7.?常见设计模式的解析和实现(二)-Abstract Factory模式
8.?常见设计模式的解析和实现(一)-Factory模式
9.?Builder模式和Brige模式的区别及其他~~
10.?乱谈-熟练掌握和学习方法
随笔分类(34)
C\C++ (6)
(rss)
脚本语言 (1)
(rss)
其他 (0)
(rss)
设计模式 (9)
(rss)
算法与数据结构 (15)
(rss)
图形学 (1)
(rss)
在路上 (2)
(rss)
随笔档案(34)
2006年7月 (23)
2006年4月 (1)
2006年3月 (4)
2006年2月 (4)
2006年1月 (1)
2005年12月 (1)
文章档案(0)
相册(0)
设计模式的示意图 (0)
论坛
ChinaUnix
OldLinux
朋友
win_hate
老罗
搜索
积分与排名
积分 - 7839
排名 - 17
最新随笔
1.?常见设计模式的解析和实现(八)-Composite模式
2.?常见设计模式的解析和实现(七)-Bridge模式
3.?常见设计模式的解析和实现(六)-Adapt模式
4.?常见设计模式的解析和实现(五)-Singleton模式
5.?常见设计模式的解析和实现(四)-Prototype模式
6.?常见设计模式的解析和实现(三)-Builder模式
7.?常见设计模式的解析和实现(二)-Abstract Factory模式
8.?常见设计模式的解析和实现(一)-Factory模式
9.?Builder模式和Brige模式的区别及其他~~
10.?乱谈-熟练掌握和学习方法
最新评论
1.?re: [算法问题]判断一个数是不是2的幂?
好文,收进我的标程库了
--我爱ACM
2.?re: 乱谈-熟练掌握和学习方法
支持.你所说的入门学习方式的确很正确.
只浏览概念,熟悉整体框架.
具体的细节,留到用的时候再去查找就是了.目前很多书都跟字典一个德性.
--LOGOS
3.?re: 测试了一下VC和gcc对关键字export的支持
@创系
哦,谢谢,但我这里不行
--周星星
4.?re: [算法问题]判断一个数是不是2的幂?
@Ying-Shen
你将nNum和nNum - 1用2进制打印出来看看就知道为什么了,如果一个数不行的话多试几个数。
--3×7=51
5.?re: [算法问题]判断一个数是不是2的幂?
@3×7=51
为什么呢?
--Ying-Shen
阅读排行榜
1.?探索C++的秘密之一详解extern "C"(1039)
2.?使用tolua++创建基于C\C++语言的lua脚本(655)
3.?探索C++的秘密之二:重载,覆盖,和隐藏 (593)
4.?NeHe OpenGL教程第六课--Texture Mapping(纹理映射)的学习笔记(526)
5.?一个关于临时对象和虚拟析构函数的问题(511)
评论排行榜
1.?探索C++的秘密之一详解extern "C"(10)
2.?[算法问题]判断一个数是不是2的幂?(8)
3.?测试了一下VC和gcc对关键字export的支持(5)
4.?模板套模板~~(5)
5.?[算法问题]寻找一个序列中第n大的元素(4)
常见设计模式的解析和实现(六)-Adapt模式
作用:
将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
UML示意图
1)采用继承原有接口类的方式
2)采用组合原有接口类的方式
解析:
Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能.
实现:
Adapt模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法.
1)Adapt.h
/**/
/*
*******************************************************************
????created:????2006/07/20
????filename:?????Adapter.h
????author:????????李创
????????????????
http://www.cppblog.com/converse/
????purpose:????Adapter模式的演示代码
********************************************************************
*/
#ifndef?ADAPTER_H
#define
?ADAPTER_H
//
?需要被Adapt的类
class
?Target
{
public
:
????Target()
{}
????
virtual
?
~
Target()?
{}
????
virtual
?
void
?Request()?
=
?
0
;
}
;
//
?与被Adapt对象提供不兼容接口的类
class
?Adaptee
{
public
:
????Adaptee()
{}
????
~
Adaptee()
{}
????
void
?SpecialRequest();
}
;
//
?进行Adapt的类,采用聚合原有接口类的方式
class
?Adapter
????:?
public
?Target
{
public
:
????Adapter(Adaptee
*
?pAdaptee);
????
virtual
?
~
Adapter();
????
virtual
?
void
?Request();
private
:
????Adaptee
*
?m_pAdptee;
}
;
#endif
2)Adapt.cpp
/**/
/*
*******************************************************************
????created:????2006/07/20
????filename:?????Adapter.cpp
????author:????????李创
????????????????
http://www.cppblog.com/converse/
????purpose:????Adapter模式的演示代码
********************************************************************
*/
#include?
"
Adapter.h
"
#include?
<
iostream
>
void
?Adaptee::SpecialRequest()
{
????std::cout?
<<
?
"
SpecialRequest?of?Adaptee\n
"
;
}
Adapter::Adapter(Adaptee
*
?pAdaptee)
????:?m_pAdptee(pAdaptee)
{
}
Adapter::
~
Adapter()
{
????delete?m_pAdptee;
????m_pAdptee?
=
?NULL;
}
void
?Adapter::Request()
{
????std::cout?
<<
?
"
Request?of?Adapter\n
"
;
????m_pAdptee
->
SpecialRequest();
}
3)Main.cpp
/**/
/*
*******************************************************************
????created:????2006/07/20
????filename:?????Main.cpp
????author:????????李创
????????????????
http://www.cppblog.com/converse/
????purpose:????Adapter模式的测试代码
********************************************************************
*/
#include?
"
Adapter.h
"
#include?
<
stdlib.h
>
int
?main()
{
????Adaptee?
*
pAdaptee?
=
?
new
?Adaptee;
????Target?
*
pTarget?
=
?
new
?Adapter(pAdaptee);
????pTarget
->
Request();
????delete?pTarget;
????system(
"
pause
"
);
????
return
?
0
;
}
posted on 2006-07-23 20:24
创系
阅读(30)
评论(0)
编辑
收藏
收藏至365Key
所属分类:
设计模式
常见设计模式的解析和实现(七)-Bridge模式
:【上一篇】
发现适合程序员玩的游戏Robocode ,ai-code。
:【下一篇】
【相关文章】
没有相关文章
【随机文章】
grub的用法
数据结构与算法(C#实现)系列---N叉树(二)
初学Javascript之cookie篇
可以感受到的好领导
Webwork in action 中文版面世了
优化C语言代码常用的几招
用PHP控制您的浏览器cache
破解 Matcom 4.0 for BC(3)
关于平等接入问题的分析
[TORQUE游戏引擎DTS文件]制作动物的DTS模型和对应的DSQ文件(DTS for animal)
【相关评论】
没有相关评论
【发表评论】
姓名:
邮件:
随机码
*
:
评论
*
:
|
首 页
|
版权声明
| 联系我们
|
网站地图
|
CopyRight © 2004-2007 软讯网络 All Rigths Reserved.