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;
}
相关推荐
努力更新中2 分钟前
Python浪漫之画一个音符♪
开发语言·python
Mr_Xuhhh10 分钟前
程序地址空间
android·java·开发语言·数据库
fpcc11 分钟前
c++应用网络编程之十五Nagle算法
网络·c++
凤枭香20 分钟前
Python Selenium介绍(二)
开发语言·爬虫·python·selenium
疯狂吧小飞牛21 分钟前
C语言解析命令行参数
c语言·开发语言
z2023050825 分钟前
linux之调度管理(13)- wake affine 唤醒特性
java·开发语言
AI人H哥会Java26 分钟前
【JAVA】Java高级:Java网络编程——TCP/IP与UDP协议基础
java·开发语言
小白要加油哈38 分钟前
Lua--1.基础知识
开发语言·junit·lua
萧萧玉树43 分钟前
分布式在线评测系统
前端·c++·后端·负载均衡
网络安全Ash1 小时前
企业网络安全之OPENVPN
开发语言·网络·php