认识适配器模式
作者:互联网
认识适配器模式
什么是适配器模式?
将一个接口转换成用户希望的接口,使得接口不相容的类可以一起工作。
角色有那些?
- Target(目标角色类)
- Client (客户端角色类)
- Adapter(适配器类)
- Adaptee(被适配角色类)
适配器模式
-
类的适配器模式(采用继承实现)
-
对象适配器(采用对象组合方式实现)
适配器模式优缺点
优点:
- 将目标类和适配者类解耦
- 将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性
缺点:
- 对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口
案例
方法1:采用继承实现(类适配器,单继承)
package com.model.adapter;
/**
* 要被适配的类 网线
*/
public class Adaptee {
public void request(){
System.out.println("连接网线上网");
}
}
package com.model.adapter;
/**
* 适配器: 连接电脑,连接网线
*/
public class Adapter extends Adaptee implements NetToUsb{
public void HandlerRequest() {
super.request();
}
}
package com.model.adapter;
/**
* 接口转换器的抽象实现
*/
public interface NetToUsb {
/**
* 作用:处理请求,使得网线能插入上网
*/
public void HandlerRequest();
}
package com.model.adapter;
/**
* 客户端类:插不上网线,无法上网
*/
public class Computer {
//电脑需要连上适配器才能上网
public void net(NetToUsb netToUsb) {
netToUsb.HandlerRequest();
}
public static void main(String[] args) {
//电脑 适配器 网线
Computer computer = new Computer();
Adaptee adaptee = new Adaptee();
Adapter adapter = new Adapter();
computer.net(adapter);
}
}
方法2:采用组合方式实现
package com.model.adapter;
/**
* 适配器: 连接电脑,连接网线
*/
public class Adapter2 implements NetToUsb{
//采用组合方式实现
private Adaptee adaptee;
public Adapter2(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void HandlerRequest() {
adaptee.request();
}
}
public class Computer {
//电脑需要连上适配器才能上网
public void net(NetToUsb netToUsb) {
netToUsb.HandlerRequest();
}
public static void main(String[] args) {
//电脑 适配器 网线
Computer computer = new Computer();
Adaptee adaptee = new Adaptee();
Adapter adapter = new Adapter();
Adapter2 a = new Adapter2(adaptee);
computer.net(adapter);
}
结果:
适配器模式在spring 中的应用
1.适配器在Spring MVC中应用
Spring MVC中的适配器模式主要用于执行目标 Controller 中的请求处理方法。
在Spring MVC中,DispatcherServlet 作为用户,HandlerAdapter 作为期望接口,具体的适配器实现类用于对目标类进行适配,Controller 作为需要适配的类。
Spring MVC 中的 Controller
种类众多,不同类型的 Controller
通过不同的方法来对请求进行处理。如果不利用适配器模式的话,DispatcherServlet
直接获取对应类型的 Controller
2.Spring AOP中的适配器模式
在Spring的Aop中,使用的 Advice(通知)
来增强被代理类的功能。
Advice的类型有:MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice
在每个类型 Advice 都有对应的拦截器,MethodBeforeAdviceInterceptor、AfterReturningAdviceInterceptor、ThrowsAdviceInterceptor
Spring需要将每个 Advice 都封装成对应的拦截器类型,返回给容器,所以需要使用适配器模式对 Advice 进行转换。
参考博文:适配器模式的应用.
标签:认识,适配,适配器,模式,Adaptee,adapter,public 来源: https://blog.csdn.net/an760998254/article/details/116769105