适配器模式【结构型模式C++】

这篇具有很好参考价值的文章主要介绍了适配器模式【结构型模式C++】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

    适配器模式是一种结构型设计模式, 又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

适配器模式【结构型模式C++】,设计模式,适配器模式

2.结构

  • Target:适配器的内容,例如客户端使用的目标接口;
  • Adaptee:被适配的内容,例如不兼容的接口;
  • Adapter:适配器,把 Adaptee 适配成 Target

适配器模式【结构型模式C++】,设计模式,适配器模式

3.实现 

3.1 实例类比

       在生活中存在各类适配器,交流电220V会转化为各类所需电压, 以手机适配器为例。在给手机充电 手机充电器相当于 Adapter适配器 ,220V的交流电 相当于 Adaptee 被适配者5V的直流电 相当于 Target目标 文章来源地址https://www.toymoban.com/news/detail-856108.html

3.2 具体实现
#include <iostream>
#include <string>
using namespace std;


//被适配类即待转化的类
class Adaptee {
public:
	int OutPut220V() {
	     std::cout << "正常220V电压..." << endl;
		 return 220;
	}
};


//转化目标
class Target {
public:
	virtual int OutPut5V()=0;
};


//适配器
class Adapter :public Target {
public:
	int OutPut5V() {
		//输入的待转化电压
		int a = inPut_->OutPut220V();
		//转化方法
		int b = a / 44;
		//返回转化结果
		std::cout << "220V电压转化为5V电压..." << endl;
		return b;
	}
	void SetInpt(Adaptee * inPut) {
		inPut_ = inPut;
	}

private:
	Adaptee * inPut_;
};


int main()
{
	Adaptee * input_ = new Adaptee();

	Adapter * adater_ = new Adapter();

	adater_->SetInpt(input_);

	adater_->OutPut5V();
	
	return 0;
}

3.3运行结果

适配器模式【结构型模式C++】,设计模式,适配器模式

4.状态设计模式优缺点   

   优点: 
  • 将目标类和适配者类解耦
  • 增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性
  • 灵活性和扩展性都非常好,符合开闭原则。如果不想用就可以卸载适配器
   缺点:
  • 过多地使用适配器,会让系统非常零乱,不易整体进行把握。
  • 由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

5 应用场景

  • 两个类所做的事情相同或相似,但是具有不同的接口时要使用
  • 在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。
  • 系统需要使用一些现有的类,而这些类的接口与系统要求的接口不兼容。
  • 需要创建一个可复用的类,该类与一些不兼容的类合作工作,而不是修改这些类的代码。
  • 在已有的系统中,希望增加一些额外的功能,而这些功能需要与已有的类协同工作,但是不能对这些类进行修改。

到了这里,关于适配器模式【结构型模式C++】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【地铁上的设计模式】--结构型模式:适配器模式

    前面几篇文章我们学习了创建型模式,从本篇文章开始,我们将学习结构型模式。 什么是结构型模式 结构型模式是一种设计模式,它描述了如何将类或对象结合在一起形成更大的结构,以提供新的功能或实现更复杂的行为。结构型模式包括以下几种: 适配器模式(Adapter P

    2024年02月02日
    浏览(44)
  • 设计模式-04.01-结构型-代理&桥接&装饰器&适配器

    创建型模式比较好理解,后面的结构型和行为型设计模式不是那么好理解。如果遇到不好理解的设计模式,我一般会在开头举比较简单的Demo案例来帮助理解。 前面几节,我们讲了设计模式中的创建型模式。创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对

    2024年02月09日
    浏览(60)
  • 适配器模式【结构型模式C++】

    1.概述      适配器模式 是一种结构型设计模式, 又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.结构 Target :适配器的内容,例如客户端使用的目标接口;

    2024年04月23日
    浏览(29)
  • 结构型模式-适配器模式

    是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 意图: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决: 主要解决在软件系

    2024年02月10日
    浏览(38)
  • 【18】c++设计模式——>适配器模式

    c++的适配器模式是一种结构型设计模式, 他允许将一个类的接口转换成另一个客户端所期望的接口 。适配器模式常用于已存在的,但不符合新需求或者规范的类的适配。 在c++中实现适配器模式时,通常需要一下几个组件: 1.目标接口(Target interface):客户端所期望的接口,

    2024年02月07日
    浏览(48)
  • 设计模式之适配器模式(Adapter)的C++实现

    在软件功能开发中,由于使用环境的改变,之前一些类的旧接口放在新环境的功能模块中不再适用。如何使旧接口能适用于新的环境?适配器可以解决此类问题。适配器模式:通过增加一个适配器类,在适配器接口中做一些适配操作,将旧模块类转换成使用者Client类期望的接

    2024年02月12日
    浏览(46)
  • 《C++新经典设计模式》之第15章 适配器模式

    适配器模式.cpp

    2024年02月03日
    浏览(50)
  • C++设计模式结构型之代理模式

    一、概述     代理模式是一种结构型模式,在很多不同的场合具有广泛的分类和应用。其主要实现的思想是在客户端和真正要访问的对象之间引入一个 代理对象(间接层),于是,以往客户端对真正对象的访问现在变成了通过代理对象进行访问,代理对象在这里起到了一个

    2024年02月13日
    浏览(45)
  • 【C++设计模式之装饰模式:结构型】分析及示例

    装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在运行时动态地给一个对象添加额外的行为。 描述 装饰模式通过创建一个包装器(Wrapper)来包裹原始对象,并在原始对象的行为前后添加额外的功能。通过这种方式,可以实现在不改变原始对象结构的情况下,动态

    2024年02月07日
    浏览(38)
  • 【Java面试题】设计模式之七种结构性模式——代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式

    目录 一、代理模式 二、适配器模式 三、桥接模式 四、装饰模式 五、外观模式 六、享元模式 七、组合模式 概念: 代理模式是为其他对象提供一种以代理控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对

    2023年04月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包