驱动力:复用现有功能,解决接口不匹配的问题。
"当你需要使用一个现成的类,但它的接口和你现在的系统格格不入,且你无权或不想修改它时,适配器就是你最直接的解决方案。"
定义
适配器模式是一种结构型设计模式,它将一个类的接口转换成客户端期望的另一个接口,使原本因接口不匹配而无法一起工作的类能够协同工作。
核心角色
目标接口(Target):客户端期望使用的接口
适配者(Adaptee):需要被适配的已有类,其接口不兼容
适配器(Adapter):实现目标接口,内部持有适配者对象,进行接口转换
优点:
✅ 提高复用性
✅ 符合开闭原则,不修改原代码
【例子】 出国旅游充电:
你从中国带了一个手机充电器(两孔扁插头)
到了英国,墙上是三孔方插座
你插不进去,但你又必须充电
你 需要一个 三孔转两孔 的 "转接头" (适配器)
这就是适配器模式的真实需求------不是因为你想用适配器,而是不转接就用不了。
适配器模式,本身逻辑超级土、超级朴素 :
根本没什么高深架构,
说白了就是:
我有个老接口/第三方API长得乱七八糟,我包一层壳,统一改成我自己项目的标准接口
正常人稍微会封装代码,随手就写出来了,根本不用套「设计模式」名头。
为什么书上非要叫它「适配器模式」?
不是代码多难,是思想规范:
① 规定好:不要改原有第三方/老代码
② 统一收口、隔离变化
③ 遵循开闭原则:新增适配只加类,不改旧业务