结构型模式-适配器模式

适配器模式理论

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

适配器模式案例

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 分钟前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
net3m3310 分钟前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法
mmz120711 分钟前
二分查找(c++)
开发语言·c++·算法
陌路2018 分钟前
C++30 STL容器 -deque双端队列
开发语言·c++
AI视觉网奇23 分钟前
ue 自己制作插件 c++
c++·ue5
Jayden_Ruan1 小时前
C++分解质因数
数据结构·c++·算法
云半S一1 小时前
pytest的学习过程
经验分享·笔记·学习·pytest
AI视觉网奇1 小时前
ue5.7 配置 audio2face
笔记·ue5
微露清风1 小时前
系统性学习C++-第二十讲-哈希表实现
c++·学习·散列表
清 澜1 小时前
c++高频知识点总结 第 1 章:语言基础与预处理
c++·人工智能·面试