适配器模式: 继承原对象,持有目标对象;
文章目录
- 适配器模式: 继承原对象,持有目标对象;
- 前言
- 一、适配器模式的作用
- 二、如何适配器模式
- 直接上代码
- 总结
前言
适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用;
一、适配器模式的作用
主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求是现有接口无法满足的;
二、如何适配器模式
例如我现在只能获取到一个类是Target,但是我想用另一个类 NewTarget 中的sout方法,这里我们就需要做一个适配
适配之后,当前依赖的是适配的类, 并不是 NewTarget ,做到了解耦
直接上代码
- 我目前持有的对象Target
public class Target {
public void required() {
System.out.println("正常的方法访问!");
}
}
- 我要调用的目标对象NewTarget
public class NewTarget {
public void sout() {
System.out.println("难搞客户的特殊方法请求!");
}
}
- 适配器
/**
* 适配器: 继承原有对象,持有目标对象
*/
public class Adapter extends Target {
NewTarget newTarget = new NewTarget();
@Override
public void required() {
newTarget.sout();
}
}
- 测试类中测试
public class Client {
// 目标对象是NewTarget
public static void main(String[] args) {
// 我能拿到的
Target target = new Adapter();
target.required();
}
}
执行结果:
总结
- 表面上,我依然调用的Target方法
- 但是Adapter继承了Target,并重写了它的方法
- 表面上调用Target实际上调用的是Adapter,而Adapter实际上调用的是目标NewTarget中的sout方法