适配器模式
适配器模式
将某个类的接口转换成客户端期望的另一个接口表示。
目的是让原本因接口不匹配不能一起工作的两个类可以协同工作。
主要有三种:
- 类适配器
- 对象适配器
- 接口适配器
类适配器
Adapter类,通过继承 被适配的类, 实现目标类接口, 实现适配。
比方说充电器,它本身相当于Adapter,220V交流电就是被适配的类,我们的目标是直流5V。
代码实现:
//适配器类 public class VoltageAdapter extends Voltage220V implements IVoltage5V { @Override public int output5V() { // TODO Auto-generated method stub //获取到220V电压 int srcV = output220V(); int dstV = srcV / 44 ; //转成 5v return dstV; } } //被适配的类 public class Voltage220V { //输出220V的电压 public int output220V() { int src = 220; System.out.println("电压=" + src + "伏"); return src; } } //适配接口 public interface IVoltage5V { public int output5V(); }
类适配器因为要继承被适配器类,所以目标类必须是一个接口。
对象适配器
就是将上面例子的Adapter类作修改,不是继承被适配类,而是采取委托方式,持有被适配器类的实例。
这样相对类适配器模式更灵活,而且成本更低了。
接口适配器
当不需要全部实现接口提供的方法时,可先设计一个抽象类或接口,并为该接口的每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖这些方法,将它适配成我们所期望的那样。