适配器模式-结构型

简介: 原理 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。  分类 1.类的适配器模式(采用继承实现) 2.对象适配器(采用对象组合方式实现)   1)类适配器模式    ——适配器继承自已实现的类(一般多重继承)。

原理

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

 分类

1.类的适配器模式(采用继承实现)

2.对象适配器(采用对象组合方式实现)

 

1)类适配器模式    ——适配器继承自已实现的类(一般多重继承)。 

Adapter与Adaptee是继承关系
1、用一个具体的Adapter类和Target进行匹配。结果是当我们想要一个匹配一个类以及所有它的子类时,类Adapter将不能胜任工作
2、使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的一个子集
3、仅仅引入一个对象,并不需要额外的指针以间接取得adaptee

 

2)对象适配器模式—— 适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 

Adapter与Adaptee是委托关系
1、允许一个Adapter与多个Adaptee同时工作。Adapter也可以一次给所有的Adaptee添加功能
2、使用重定义Adaptee的行为比较困难
无论哪种适配器,它的宗旨都是:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。
即在不改变原有系统的基础上,提供新的接口服务。

 

 

 

组成

目标角色(Target):定义Client使用的与特定领域相关的接口。
客户角色(Client):与符合Target接口的对象协同。
被适配角色(Adaptee):定义一个已经存在并已经使用的接口,这个接口需要适配。
适配器角色(Adapter) :适配器模式的核心。它将对被适配Adaptee角色已有的接口转换为目标角色Target匹配的接口。对Adaptee的接口与Target接口进行适配.

 

 与其他模式的区别

桥梁模式(bridge模式):桥梁模式与对象适配器类似,但是桥梁模式的出发点不同:桥梁模式目的是将接口部分和实现部分分离,从而对它们可以较为容易也相对独立的加以改变。而对象适配器模式则意味着改变一个已有对象的接口

装饰器模式(decorator模式):装饰模式增强了其他对象的功能而同时又不改变它的接口。因此装饰模式对应用的透明性比适配器更好。结果是decorator模式支持递归组合,而纯粹使用适配器是不可能实现这一点的。

Facade(外观模式):适配器模式的重点是改变一个单独类的API。Facade的目的是给由许多对象构成的整个子系统,提供更为简洁的接口。而适配器模式就是封装一个单独类,适配器模式经常用在需要第三方API协同工作的场合,设法把你的代码与第三方库隔离开来。适配器模式与外观模式都是对现相存系统的封装。但这两种模式的意图完全不同,前者使现存系统与正在设计的系统协同工作而后者则为现存系统提供一个更为方便的访问接口。简单地说,适配器模式为事后设计,而外观模式则必须事前设计,因为系统依靠于外观。总之,适配器模式没有引入新的接口,而外观模式则定义了一个全新的接口。

代理模式(Proxy )在不改变它的接口的条件下,为另一个对象定义了一个代理。

 

装饰者模式,适配器模式,外观模式三者之间的区别:

装饰者模式的话,它并不会改变接口,而是将一个一个的接口进行装饰,也就是添加新的功能。

适配器模式是将一个接口通过适配来间接转换为另一个接口。

外观模式的话,其主要是提供一个整洁的一致的接口给客户端。

 

目录
相关文章
|
1月前
|
存储 弹性计算 数据管理
阿里云对象存储OSS收费标准:存储费、流量价格及不同计费模式全解析
阿里云OSS收费标准涵盖存储、流量等费用,支持按量付费与资源包两种模式。标准存储按量0.09元/GB/月,包年500GB仅需118.99元,流量费按公网出方向计费,闲时0.25元/GB,忙时0.5元/GB,可购流量包更优惠。
1128 6
|
人工智能 搜索推荐 大数据
智能食品生产:自动化与定制化的食品制造
【10月更文挑战第26天】本文探讨了智能食品生产中的自动化与定制化趋势。自动化技术在原料处理、加工制造、包装和质检等环节的应用,显著提高了生产效率和产品质量。智能化技术则通过物联网、大数据、云计算和人工智能等手段,实现了更高效、精准和灵活的生产,并能满足消费者的个性化需求。虽然面临高成本、技术维护和数据安全等挑战,但政府和企业共同努力,将推动食品行业的健康和可持续发展。
|
人工智能 网络协议 Docker
AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署
AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署
922 2
|
供应链 Python
供需匹配(Demand-Supply Matching)的详细解释与Python代码示例
供需匹配(Demand-Supply Matching)的详细解释与Python代码示例
解决Xshell显示中文乱码的问题
执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式。要让Xshell不显示乱码,则要将编码方式改为UTF-8。
3931 0
|
移动开发 小程序 安全
对比多个笔记软件后,我选择了语雀
去年开始带团队,在面临团队文档管理共享软件选择时,我毫不犹豫的选择了语雀,语雀的协作功能非常出色。可以邀请团队成员加入我的笔记工作空间,共同协作编辑和维护笔记和文档。通过语雀,可以很方便地进行团队内部的协作和交流,并对笔记进行版本控制,以避免多人编辑时出现不同步的问题。通过团队空间、知识库、目录的层级管理,能很好的将知识做分类。
1146 0
|
Web App开发 前端开发 JavaScript
ESM Bundleless 在低代码场景的实践
ESM Bundleless 在低代码场景的实践
534 0
|
机器学习/深度学习 算法 数据库
①机器学习推荐算法之关联规则Apriori与FP-Growth算法详解
机器学习推荐算法之关联规则Apriori与FP-Growth算法详解
506 0
①机器学习推荐算法之关联规则Apriori与FP-Growth算法详解