设计模式之适配器模式
概念定义
1 2 3 4 5 6
| 菜鸟教程定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合 了两个独立接口的功能。 场景: 将旧的接口适配成新的接口:当系统中使用的旧接口与新的业务需求不兼容时(比如需要新增一些旧系统没有的功能),可以使用适配器模式将旧接口适配成新的接口,使得旧接口可以与新的业务需求协同工作。 复用已有的类:当一个已有的类提供的接口与当前需要的接口不匹配时,可以使用适配器模式将该类适配成满足需求的接口,从而复用该类的功能。 统一多个类的接口:当系统中存在多个类的接口不一致,而客户端需要统一调用它们的接口时,可以使用适配器模式将这些类的接口适配成统一的接口,使得客户端可以一致地操作这些类。
|
代码实现
- 适配器模式的代码理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package com.jw.cloud.modulepattern.adaptee;
public class AdapteeClient { public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); target.adapteeVideo(); } }
|
- 被适配类,相当于旧功能
1 2 3 4 5 6 7 8 9 10 11 12 13
| package com.jw.cloud.modulepattern.adaptee;
public class Adaptee{ public void videoPlay() { System.out.println("我是老系统,我可以实现视频的播放"); } }
|
- 目标接口,这就是我们现在需要实现的接口,让这个接口和老系统的东西能衔接上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.jw.cloud.modulepattern.adaptee;
public interface Target {
void adapteeVideo();
void mp3(); }
|
- 目标类,去实现目标接口的方法,完成与老系统的衔接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package com.jw.cloud.modulepattern.adaptee;
public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; }
@Override public void adapteeVideo() { System.out.println("我这是新模块的新功能呦"); adaptee.videoPlay(); }
@Override public void mp3() {
} }
|
运行结果
从下图的运行结果可以看出,我们没有破坏旧系统的代码逻辑,适配了些新功能上去。
总结
适配器模式是一种结构型设计模式,它用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式允许不兼容的类能够协同工作,通过将一个类的接口包装在另一个类中,从而使两个不兼容的接口能够相互配合。