千家信息网

“Head First 设计模式“ :适配器模式

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,适配器模式适配器模式定义:将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。对象适配器类图如下:角色说明:● Target,目标接口● Adapter,适配器● Ad
千家信息网最后更新 2026年11月03日“Head First 设计模式“ :适配器模式

适配器模式


适配器模式定义:将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。对象适配器类图如下:

角色说明:
● Target,目标接口
● Adapter,适配器
● Adaptee,被适配对象
● Client,客户端


客户使用适配器的过程如下:
● 客户通过目标接口调用适配器的方法对适配器发出请求。
● 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口。
● 客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。


适配器模式的优点:
● 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无需修改原有结构。
● 增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者的复用性,同一适配者类可以在多个不同的系统中复用。
● 灵活性和扩展性都非常好,通过使用配置文件,可以很方便的更换适配器,也可以在不修改原有代码的基础上 增加新的适配器,完全复合开闭原则。


适配器模式的缺点:
● 一次最多只能适配一个适配者类,不能同时适配多个适配者。
● 目标抽象类只能为接口,不能为类,其使用有一定的局限性。


适配器模式的使用场景:
● 系统需要使用一些现有的类,而这些类的接口不符合系统的需要,甚至没有这些类的源代码
● 创建一个可以重复使用的类,用于和一些彼此之间没有太大关联的类,包括一些可能在将来引进的类一起工作


扩展:
● 双向适配器,两个接口互相转换,省略类图,说明
● 类适配器,Java不支持多重继承,所以省略类图,说明


案例1:假设已有一个软件系统,你希望它能和一个新的厂商类库搭配使用,但是这个新的厂商所设计出来的接口不同于旧厂商的接口。怎么实现好,如下:

解决办法,我们不改目前代码的情况下,加一个适配器(Adapter)类,适配器对用户来说透明的,如下:


案例2:有鸭子接口(鸭子能飞,呱呱叫),火鸡接口(可以飞点,姑姑叫),假设我们缺鸭子对象,用火鸡来冒充,类图如下:


案例3:JDK中早起版本的Collection集合都实现了一个elements(),该方法返回一个包含集合里的每一个元素的枚举,新版本的JDK里用Iterator来代替了,而且Iterator还提供了删除元素的能力,假设有一个预留代码,这个代码爆出枚举接口,但是我们想新代码中使用迭代器,我们用适配器模式来解决,如下:


案例4: JDK里IO框架里的InputStreamReader,OutputStreamReader使用的是适配器模式,如下:

说明:
● InputStream,OutputStream是被适配对象。
● Reader,Writer是目标接口。
● StreamEncoder是中间类,byte类型转字符时需要编码转换的,贵类的作用就是这个。
● InputStreamReader,OutputStreamReader是适配器类。


设计原则:"最少知识"原则:只和你的密友谈话。

适配 适配器 接口 模式 客户 代码 目标 对象 案例 系统 厂商 原则 多个 鸭子 复用 设计 作用 元素 客户端 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 互联网电商科技 科技信息互联网 互联网科技作文 新华互联网科技校企合作 字节跳动和互联网科技 现代互联网科技股 互联网科技有哪些公司 互联网科技项目计划书材料类 宝灵互联网科技有限公司 链环科技传统企业怎么转型互联网 河南住房之家互联网科技 富国互联网科技002692 宇信科技在杭州互联网排第几 宁波跨境商互联网科技有限公司 美国五大互联网科技公司市值多少 科技互联网公司两年变化 互联网科技自媒体灵感 银川新华互联网科技学校招聘 六子台科技互联网展会 哈尔滨大商圈互联网科技有限公司 科技互联网公司装修 北京禾田雨橡互联网科技 互联网金融 科技创新 科技大学互联网专业好不好 安控科技rtu产品工业互联网 贵州叶脉互联网科技有限公司所属行业 互联网科技和法律行业 特约风豹互联网科技为什么扣费 互联网科技品牌
0