lusiqi

设计模式-适配器模式,介绍适配器模式,及代码实现。


简介

适配器模式,将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在开发过程中,系统的数据和行为都正确,但是接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

使用场景

  • 在使用一个已经存在的类,但如果它是接口,也就是它的方法和你要求的不相同时,就应该考虑适配器模式。
  • 两个类所做的事情相同或类似,但是具有不同的接口时可以使用它。
  • 接口和调用方双方都不太容易修改的时候可以使用适配器适配

角色

  • 需要适配的类
  • 适配器
  • 期待的接口

代码实现

需要适配的类

1
2
3
4
5
6
7
8
9
10
11
/**
* @description 客户所期待的接口
* @author dxy
* @date 20200312
*/
public abstract class Target {

public void request() {
System.out.println("普通请求!");
}
}

适配器类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @description 适配器类,通过在内部包装一个Adaptee对象,把原接口转换成目标接口
* @author dxy
* @date 20200312
*/
public class Adapter extends Target {

private Adaptee adaptee = new Adaptee();

@Override
public void request() {
adaptee.specificRequest();
}
}

期待的接口

1
2
3
4
5
6
7
8
9
10
11
/**
* @description 客户所期待的接口
* @author dxy
* @date 20200312
*/
public abstract class Target {

public void request() {
System.out.println("普通请求!");
}
}

客户端调用类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @description 适配器客户端
* @author dxy
* @date 20200312
*/
public class AdapterClient {

public static void main(String[] args) {
Target target;

target = new Adapter();
target.request();
}
}

 评论