C++设计模式-适配器(Adapter)

目录

C++设计模式-适配器(Adapter)

一、意图

二、适用性

三、结构

四、参与者

五、代码


C++设计模式-适配器(Adapter)

一、意图

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

二、适用性

  • 你想使用一个已经存在的类,而它的接口不符合你的需求。
  • 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
  • (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。

三、结构

类适配器使用多重继承对一个接口与另一个接口进行匹配。

对象匹配器依赖于对象组合。

四、参与者

  • Target

定义Client使用的与特定领域相关的接口。

  • Client

与符合Target接口的对象协同。

  • Adaptee

定义一个已经存在的接口,这个接口需要适配。

  • Adapter

对Adaptee的接口与Target接口进行适配。

五、代码

cpp 复制代码
#include<iostream>
using namespace std;

class Target {
public:
	virtual void Request() {
		cout << "Target::Request" << endl;
	}
};

class Adaptee {
public:
	void SpecificRequest() {
		cout << "Adaptee::SpecificRequest" << endl;
	}
};

//Adapter Class
class AdapterClass :public Target, private Adaptee {
public:
	virtual void Request() {
		cout << "AdapterClass::Request" << endl;
		this->SpecificRequest();
	}
};

//Adapter Object
class AdapterObject :public Target {
public:
	AdapterObject(Adaptee* TempAdaptee) {
		this->adaptee = TempAdaptee;
	}
	virtual void Request() {
		cout << "AdapterObject::Request" << endl;
		adaptee->SpecificRequest();
	}
private:
	Adaptee* adaptee;
};

int main() {
	//Adapter Class
	AdapterClass* adapterClass = new AdapterClass;
	adapterClass->Request();

	//Adapter Object
	Adaptee* adaptee = new Adaptee;
	AdapterObject* adapterObject = new AdapterObject(adaptee);
	adapterObject->Request();

	return 0;
}
相关推荐
m晴朗几秒前
RDK X5 交叉编译OSS\QT\opencv\openssl
开发语言·opencv·rdkx5
RedJACK~7 分钟前
Go语言Stdio传输MCP Server示例【Cline、Roo Code】
开发语言·后端·golang
sword devil9008 分钟前
基于pyqt的上位机开发
开发语言·python·pyqt
努力努力再努力wz13 分钟前
【Linux实践系列】:进程间通信:万字详解共享内存实现通信
java·linux·c语言·开发语言·c++
m0_6779048416 分钟前
muduo源码解析
网络·c++
weixin_4284984924 分钟前
C/C++工程中的Plugin机制设计与Python实现
c语言·c++·python
-曾牛26 分钟前
Azure OpenAI 聊天功能全解析:Java 开发者指南
java·开发语言·人工智能·spring·flask·azure·大模型应用
智者知已应修善业27 分钟前
【验证哥德巴赫猜想(奇数)】2021-11-19 15:54
c语言·c++·经验分享·笔记·算法
yangyang_z1 小时前
【C++设计模式之Strategy策略模式】
c++·设计模式·策略模式
小众AI1 小时前
fastmcp: 更好用的 MCP Python 框架
开发语言·人工智能·python