适配器模式定义
适配器模式是结构型设计模式的一种,通过使用继承或组合的方式将不兼容的接口适配为另一种兼容的接口。
适配器模式的使用场景
适配器模式主要用于接口不兼容的情况,因此如果在前期接口设计得当,该设计模式便没有用武之地。那么有哪些场景会使接口不兼容呢?
- 依赖了多个功能相似的外部系统,如短信平台。使用适配器模式统一依赖的多个外部系统的接口。
- 版本升级需要废弃对外提供的旧接口,使用适配器模式临时过渡。
适配器模式的实现
通过继承实现
public class OldClass {
public void oldMethod(){
}
}
public interface NewInterface {
void newMethod();
}
public class OldClassAdapter extends OldClass implements NewInterface{
@Override
public void newMethod() {
super.oldMethod();
}
}
通过组合实现
public class OldClass {
public void oldMethod(){
}
}
public interface NewInterface {
void newMethod();
}
public class OldClassAdapter extends OldClass implements NewInterface {
private OldClass oldClass;
public OldClassAdapter(OldClass oldClass) {
this.oldClass = oldClass;
}
@Override
public void newMethod() {
this.oldClass.oldMethod();
}
}
实现选择
- 如果需要适配的旧的类很少,那么使用继承或组合的方式实现适配器模式都可以。
- 如果需要适配的旧的类很多,并且旧的类的方法和新的接口中的方法相似,那么使用继承实现适配器模式。
- 如果需要适配的旧的类很多,并且旧的类的方法和新的接口中的方法差异较大,那么可以使用组合的方式实现适配器模式。
参考:设计模式之美——王争