当前位置: 首页> 游戏> 单机 > java设计模式:03-01-适配器模式

java设计模式:03-01-适配器模式

时间:2025/7/13 5:33:00来源:https://blog.csdn.net/Mr_Air_Boy/article/details/140516559 浏览次数:0次

适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)是一种结构型设计模式,它用于将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式通过创建一个中间层(适配器)来实现不同接口之间的兼容。

适配器模式的应用场景

  • 系统需要使用现有的类,但这些类的接口不符合需求:例如,当新系统需要使用旧系统的接口。
  • 需要将一个类的接口转换成客户希望的另一个接口:例如,第三方库的接口与现有系统的接口不兼容时。
  • 希望重用一些现有的类,但接口不兼容:例如,在遗留系统与新系统之间做数据转换时。

适配器模式的实现方式

1. 类适配器模式(使用继承实现)

思想:通过继承适配者类(Adaptee),将适配者类的方法适配到目标接口(Target Interface)的方法上。

实现方式

// 目标接口
interface Target {void request();
}// 适配者类
class Adaptee {public void specificRequest() {System.out.println("Called specificRequest()");}
}// 类适配器
class ClassAdapter extends Adaptee implements Target {public void request() {specificRequest();}
}// 客户端代码
public class ClassAdapterPattern {public static void main(String[] args) {Target target = new ClassAdapter();target.request();}
}

优点

  • 适配器类通过继承适配者类,不需要显式创建适配者类的实例。
  • 适配器类可以重写适配者类的方法,提供更灵活的实现。

缺点

  • Java 不支持多继承,如果适配者类已经有一个父类,无法再继承适配者类。
  • 适配器类紧耦合于适配者类,难以复用和扩展。
2. 对象适配器模式(使用组合实现)

思想:通过组合适配者类的实例,将适配者类的方法适配到目标接口的方法上。

实现方式

// 目标接口
interface Target {void request();
}// 适配者类
class Adaptee {public void specificRequest() {System.out.println("Called specificRequest()");}
}// 对象适配器
class ObjectAdapter implements Target {private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee = adaptee;}public void request() {adaptee.specificRequest();}
}// 客户端代码
public class ObjectAdapterPattern {public static void main(String[] args) {Adaptee adaptee = new Adaptee();Target target = new ObjectAdapter(adaptee);target.request();}
}

优点

  • 适配器类与适配者类是松散耦合的,适配器类不继承适配者类,可以复用多个不同的适配者类。
  • 可以更灵活地扩展和复用代码。

缺点

  • 需要显式创建适配者类的实例,增加了系统的复杂度。
  • 适配器类需要与适配者类保持一致,增加了适配器类的复杂度。

总结

实现方式优点缺点
类适配器模式适配器类通过继承适配者类,不需要显式创建适配者类的实例。不支持多继承,适配器类紧耦合于适配者类,难以复用和扩展。
对象适配器模式适配器类与适配者类是松散耦合的,可以复用多个不同的适配者类。需要显式创建适配者类的实例,增加了系统的复杂度。

选择哪种实现方式应根据具体的需求和系统的复杂度来决定。如果适配者类的接口较为简单且不需要多继承,类适配器模式较为合适。如果需要复用多个不同的适配者类或适配者类的接口复杂,使用对象适配器模式更加灵活和可扩展。

关键字:java设计模式:03-01-适配器模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: