您的位置:首页 > 编程语言 > C语言/C++

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

2010-10-17 19:01 821 查看
作用:
将一个类的接口转换成客户希望的另外一个接口。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;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: