适配器模式的三种类型(类适配器、对象适配器、接口适配器)的名字主要来源于它们的实现方式和解决的问题。以下是它们的命名逻辑和记忆技巧:
1. 类适配器(Class Adapter)
名字由来:
- “类”:通过继承被适配者类(
Adaptee
)的方式实现适配。 - 核心逻辑:适配器类继承被适配者类,并实现目标接口,直接复用父类(
Adaptee
)的方法。
记忆技巧:
- 关键词:“类” → 继承(类的继承关系)。
- 联想:类似“子类继承父类”,适配器是
Adaptee
的子类。 - 口诀:“类继承,直接拿来用”。
2. 对象适配器(Object Adapter)
名字由来:
- “对象”:通过组合对象(持有
Adaptee
的实例)的方式实现适配。 - 核心逻辑:适配器类持有被适配者的对象(组合关系),在调用时委托给这个对象。
记忆技巧:
- 关键词:“对象” → 组合(对象间的组合关系)。
- 联想:类似“把工具装进工具箱”,适配器将
Adaptee
对象作为工具使用。 - 口诀:“对象组合,灵活又解耦”。
3. 接口适配器(Interface Adapter)
名字由来:
- “接口”:用于简化对复杂接口的适配(如接口中有多个方法,但只需部分实现)。
- 别名:缺省适配器(Default Adapter),因为它为接口方法提供默认空实现。
- 核心逻辑:通过抽象类为接口提供默认空实现,用户只需按需重写。
记忆技巧:
- 关键词:“接口” → 简化接口(过滤不需要的方法)。
- 联想:类似“万能插排”,只暴露需要的插孔。
- 口诀:“接口太多,抽象来兜底”。
如何快速记忆?
1. 从名字关联实现方式:
- 类适配器 → 用类继承(
extends Adaptee
)。 - 对象适配器 → 用对象组合(
private Adaptee adaptee
)。 - 接口适配器 → 用抽象类过滤接口方法。
2. 场景联想:
- 类适配器:需要直接改造父类的功能(类似“魔改原生代码”)。
- 对象适配器:需要外挂一个工具对象(类似“用转接头连接设备”)。
- 接口适配器:需要屏蔽接口的复杂性(类似“只保留遥控器的常用按键”)。
3. 一句话总结:
- 类适配器:继承一个类,实现接口。
- 对象适配器:组合一个对象,实现接口。
- 接口适配器:抽象类实现接口,按需重写。
对比表格
类型 | 实现方式 | 适用场景 | 关键区别 |
---|---|---|---|
类适配器 | 继承 | 需要直接复用父类方法 | 单继承限制,耦合度高 |
对象适配器 | 组合 | 需要适配多个类或解耦 | 更灵活,推荐使用 |
接口适配器 | 抽象类 | 接口方法过多,需简化实现 | 避免冗余代码,按需覆盖方法 |
通过名字中的关键词(类、对象、接口)和实现方式的关联,可以轻松记忆它们的区别和适用场景!