结构型模式-适配器模式

适配器模式理论

将一个类的接口转换目标接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

适配器模式案例

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

//适配器模式 就是将已经写好的接口,但是这个接口不符合需求
//将写好的接口转换成目标接口

//这函数我已经写好
struct Myprint{
	void operator()(int v1,int v2) {
		cout << v1 + v2 << endl;
	}
};

//定义目标接口 我要是配偶 适配成什么样的,
//要适配成只能传一个参数的,适配for_each第三个参数的适用
class Target {
public:
	virtual void operator()(int v) = 0;

};

//写适配器
class Adapater :public Target {
public:
	Adapater(int param) {
		this->param = param;
	}
	virtual void operator() (int v) {
		print(v,param);
	}
public:
	Myprint print;
	int param;
};

//MyBind2nd,原来param固定的10,现在提供一个方法改
Adapater MyBind2nd(int v) {
	return Adapater(v);
}


int main(void) {
	vector<int> v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	
	//适配器模式的运用
	//for_each()的第三个参数是个带一个参数的函数,但是Myprint需要两个参数
	for_each(v.begin(),v.end(), MyBind2nd(10));

	return 0;
}

适配器模式的优缺点

优点:

(1)将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有结构。

(2)增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用。

(3)灵活性和扩展性都非常好,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合"开闭原则"。

缺点:

适配器中置换适配者类的某些方法比较麻烦。

适配器模式的适用场景

(1) 系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源代码。

(2) 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。

相关推荐
曙曙学编程1 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
△曉風殘月〆1 小时前
Visual Studio中的常用调试功能(下)
c++·ide·visual studio·调试
yatingliu20191 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
郭庆汝1 小时前
CMake概述用法详细笔记
笔记
武当豆豆1 小时前
C++编程学习(第25天)
开发语言·c++·学习
张人玉1 小时前
XML 序列化与操作详解笔记
xml·前端·笔记
风和日丽 随波逐流1 小时前
java17学习笔记-Deprecate the Applet API for Removal
笔记·学习
淮北也生橘122 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
diablobaal2 小时前
云计算学习100天-第17天
学习
果粒橙_LGC3 小时前
论文阅读系列(一)Qwen-Image Technical Report
论文阅读·人工智能·学习