您的位置:首页 > 其它

适配器模式 Adapter

2015-07-07 20:22 260 查看
适配器模式,调整使之符合另一接口

1类适配器模式,子类继承Adaptee类

#include <IOSTREAM>
using namespace std;
//类适配器

class Target{
public:
virtual void action() = 0;
};

class Adaptee{
public:
void Adapteraction(){
cout<<"hello world"<<endl;
}
};

class Adapter:public Target,Adaptee{
public:
void action(){
this->Adapteraction();
}
};

int main(int argc, char* argv[])
{
Target * p = new Adapter;
p->action();
delete p;
return 0;
}


2对象适配器模式,将Adaptee类作为对象存在于Adapter类中,在Adapter类中由Target继承来的接口中调用Adaptee的操作

//对象适配器

class Target{
public:
virtual void action() = 0;
};

class Adaptee{
public:
void Adapteraction(){
cout<<"hello world"<<endl;
}
};

class Adapter:public Target{
public:
void action(){
p->Adapteraction();
}
Adapter(){
p = new Adaptee;
}
~Adapter(){
delete p;
}
private:
Adaptee * p;
};

int main(int argc, char* argv[])
{
Target * p = new Adapter;
p->action();
delete p;
return 0;
}


3.缺省适配器模式,

我们将这个中间过渡类称为 “缺省适配类”,缺省适配模式为一个接口提供缺省实现

#include <IOSTREAM>
using namespace std;
//缺省适配器

class Target{
public:
virtual void action1() = 0;
virtual void action2() = 0;
virtual void action3() = 0;
};

class DefaultAdapter:public Target{
public:
void action1(){
cout<<"action1"<<endl;
}
void action2(){
cout<<"action2"<<endl;
}
void action3(){
cout<<"action3"<<endl;
}
};

class Adapter:public DefaultAdapter{
public:
void action1(){
cout<<"only want action1"<<endl;
}
};

int main(int argc, char* argv[])
{
Target * p = new Adapter;
p->action1();
delete p;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: