首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 常见设计模式的解析和实现(六)-Adapt模式
【标  题】:常见设计模式的解析和实现(六)-Adapt模式
【关键字】:-Adapt
【来  源】:http://www.cppblog.com/converse/archive/2006/07/23/10373.html

常见设计模式的解析和实现(六)-Adapt模式

C++博客 - 创系的技术博客 - 常见设计模式的解析和实现(六)-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 所属分类: 设计模式
【相关文章】
没有相关文章
【相关评论】
没有相关评论
【发表评论】
姓名:
邮件:
随机码*
评论*
      
|  首 页  |  版权声明  |  联系我们   |  网站地图  |
CopyRight © 2004-2007 软讯网络 All Rigths Reserved.