文章目录
一、适配器模式基础知识
适配器模式定义:将一个类的接口转换成客户希望的另一个接
口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可
以一起工作。
Client:客户端,调用自已需要的领域接口 Target。
Target:定义客户端需要的跟特定领域的相关接口。
Adaptee:已经存在的接口,通常能满足客户端的功能要求,但
是接口与客户端要求的特定领域接口不一致,需要被适配。
Adapter:适配器,把 Adaptee 适配成为 Client 需要的 Target。
1、适配器模式:作为两个不兼容的接口之间的桥梁。它属于结构体
型模式,结合两个独立接口的功能。
2、主要解决:解决在软件系统当中,将一些“现存的对象”放到新
的环境当中,而新环境要求的接口是现对象不能满足的。
3、优点:可以让任何两个没有关联的类一起执行;为了提高类的利
用;增加类的透明度;灵活性更好。
4、缺点:适配器使用过多,让整个系统非常零乱,不容易整体进行
把控
实例
#include <iostream>
using namespace std;
// 我们要定义客户端使用的接口,与特殊领域相关的
class Target {
public:
virtual void RequestFunc() = 0;
virtual ~Target() {
cout << "调用Target类析构函数." << endl;
}
};
// 已经存在的接口,这个接口需要被适配
class Adaptee {
public:
void SpecificRequestFunc() {
cout << "\nAadaptee类特殊请求处理实现模块.\n" << endl;
}
~Adaptee() {
cout << "调用Adaptee类析构函数." << endl;
}
};
// 适配器,将现在接口转为需要的接口
class Apapter :public Target {
private:
Adaptee* adaptee;
public:
Apapter() {
adaptee = new Adaptee();
cout << "调用Apapter类构造函数." << endl;
}
public:
virtual void RequestFunc() { // 可以转调已经实现的方法,进行适配
adaptee->SpecificRequestFunc();
}
virtual ~Apapter() {
if (adaptee != NULL)
{
delete adaptee;
adaptee = NULL;
}
cout << "调用Apapter类析构函数." << endl;
}
};
int main()
{
// 创建客户端需要调用的接口对象
Target* target = new Apapter();
target->RequestFunc(); // 请求处理操作
if (target != NULL)
{
delete target;
target = NULL;
}
return 0;
}