一、 作用
为一个内容合适但接口不匹配的对象创建一个新的接口,使它适合当前客户调用。其实我们经常封装函数就是这样。
二、 模型图
类适配:采用多继承的方式来实现
对象适配:采用内部包含被适配的类来实现
三、 参与者
target:一个当前使用的接口。
adaptee:一个已经存在的接口,这个接口与当前要使用的不符,即须要适配。
adapter:一个,负责改造adaptee的接口,使它适合target。
四、 操作流程
类适配:在C++中可以方便地用多继承来实现,实现时adaptee最好用private继承。
对象适配:把adaptee当作adapter中的一个对象成员。
五、 比较
无。
六、 C++实现
随便搞了消息提示的例子。
以下是C++代码实现:
#include <iostream>
using namespace std;
//已有的类
class ShowMsg
{
public:
void operator()(char *title, char *msg, char *userdata)
{
cout<<title<<msg<<userdata<<endl;
}
};
//以下是两个适配类
class MyShow1
{
public:
void operator()(char *msg)
{
m_sm(msg, "", "");
}
private:
ShowMsg m_sm;
};
class MyShow2: private ShowMsg
{
public:
void operator()(char *msg)
{
ShowMsg()(msg, "", "");
}
};
int main(int argc, char **argv)
{
MyShow1()("This is first msg!");
MyShow2()("This is second msg!");
return 0;
}