当前位置: 首页 > article >正文

C++二十三种设计模式之适配器模式

C++二十三种设计模式之适配器模式

  • 一、组成
  • 二、特点
  • 三、目的
  • 四、缺点
  • 五、示例代码

一、组成

抽象适配器类:声明转换器接口。
具体适配器类:拥有适配者类的持有,实现转换器接口。
适配者类:被适配的类。

二、特点

1、在具体适配器内通过转换器接口调用适配者类的函数来实现适配。

三、目的

解决对象之间接口不兼容的问题。

四、缺点

1、性能开销问题,如果需要频繁调用适配者对象接口,适配器接口调用会带来额外性能开销。

五、示例代码

#include<iostream>
#include <vector>
#include <string>
#include <mutex>

using namespace std;

class Target;//抽象适配器类
class Adapter;//具体适配器类
class Adaptee;//适配者类


class Target {
public:
	virtual ~Target() {};
	virtual void todo() = 0;
};

class Adaptee {

public:
	~Adaptee() {}
	void dosomthing() {
		cout << "Adaptee::dosomthing()" << endl;
	}
};

class Adapter : public Target{
public:
	Adapter() : adaptee(make_shared<Adaptee>()) {};
	~Adapter() {};
	void todo() override {
		adaptee->dosomthing();
	};
private:
	shared_ptr<Adaptee> adaptee;
};

int main() {
	shared_ptr<Target> target = make_shared<Adapter>();
	target->todo();
}

http://www.kler.cn/a/471068.html

相关文章:

  • 如何把xiaoya小雅映射到Windows的此电脑上?
  • AWS Glue基础知识
  • nvm如何安装
  • selenium4.21的使用问题总结
  • 深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(一)
  • LabVIEW大数据有什么应用场景?
  • php反序列化原生态 ctfshow练习 字符串逃逸
  • MySQL 01 02 章——数据库概述与MySQL安装篇
  • 免费分享 | 基于极光优化算法PLO优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码
  • 力扣66 加一
  • C# in 参数修饰符的使用
  • 特制一个自己的UI库,只用CSS、图标、emoji图 日后慢用!!!
  • Win11+WLS Ubuntu 鸿蒙开发环境搭建(一)
  • ubuntu开机启动服务
  • INT305 Machine Learning
  • Docker Compose 启动 Harbor 并指定网络
  • Power BI如何连接Azure Databricks数据源?
  • 什么是Lua协同程序?和线程有什么区别?
  • vue.js sync修饰符
  • STM32拓展 低功耗案例1:睡眠模式 (hal)