C++设计模式之适配器模式

本文介绍了适配器模式的设计目的及其实现方式,通过UML设计和代码实例详细阐述了如何解决接口不兼容的问题,同时分析了该模式的应用场景及优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

1.设计目的

2.UML设计

3. 代码实现

4. 总结

4.1 应用场景

4.2 优点与缺点


1.设计目的

软件开发中,经常会遇到模块接口不同兼容的情况,如,提供者参数类型时xml格式,而调用者的使用数据类型时JSON,此时就需要使用方法将这两个接口适配下。

而在适配的过程中,还不要影响到业务的代码结构,也让这个适配过程具有一定的扩展性,方便扩展其他的数据类型或者属性结构。

所以引入适配器模式,添加适配对象。

2.UML设计

以经典的“方钉与圆孔”为例子,方钉向插入圆孔必须从根本上半径做适配,所以如图:

3. 代码实现

代码实现:https://github.com/luozichao324/Design-Patterns/tree/main/Adapter/Adapter_SquarePegRoundHole

4. 总结

4.1 应用场景

a) 当你希望使用某个类, 但是其接口与其他代码不兼容时, 可以使用适配器类。 适配器模式允许你创建一个中间层类, 其可作为代码与遗留类、 第三方类或提供怪异接口的类之间的转换器。

b) 如果你需要复用这样一些类, 他们处于同一个继承体系, 并且他们又有了额外的一些共同的方法, 但是这些共同的方法不是所有在这一继承体系中的子类所具有的共性。

此时你可以把这些共同的方法扩展到需要的子类中,但这样你必须在所有新子类中重复添加这些代码。

那么此时引入适配器对象,将缺失功能添加到一个适配器对象中,然后你可以将缺少功能的对象封装在适配器中, 从而动态地获取所需功能。此适配器对象也是继承于同一个继承体系。

4.2 优点与缺点

a) 单一职责原则,你可以将接口或数据转换代码从程序主要业务逻辑中分离。

b) 开闭原则,只要客户端代码通过客户端接口与适配器进行交互, 你就能在不修改现有客户端代码的情况下在程序中添加新类型的适配器。

c) 代码整体复杂度增加, 因为你需要新增一系列接口和类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值