1、什么是适配器
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。举个例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
优点:
(1)、可以让任何两个没有关联的类一起运行。
(2)、提高了类的复用。
(3)、增加了类的透明度。
(4)、灵活性好。
缺点:
(1)、过多地使用适配器,会让系统非常零乱。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,因此如果不是很有必要,不使用适配器。
(2)、由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。
2、适配器模式中的角色分析
目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
3、实现方式
(1)、类适配器(采用继承实现)
(2)、对象适配器(采用对象组合方式实现)
4、代码实现
继承方式:
public class Phone {
//充电
public void charging(Voltage5V voltage5V){
if(voltage5V.output5v() == 5){
System.out.println("电压为5v,可以使用");
}else {
System.out.println("电压过大 不允许使用");
}
}
}
public class Voltage220V {
public int output220v(){
int src = 220;
System.out.println("输出220V");
return src;
}
}
public interface Voltage5V {
public int output5v();
}
public class Voltage5VAdapter extends Voltage220V implements Voltage5V{
@Override
public int output5v() {
int src = output220v();
int dst = src / 44;
return dst;
}
}
public class Test {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new Voltage5VAdapter());
}
}
对象组合方式
public class Voltage220V {
public int output220v(){
int src = 220;
System.out.println("输出220V");
return src;
}
}
public interface Voltage5V {
public int output5v();
}
public class Voltage5VAdapter implements Voltage5V {
private Voltage220V voltage220V;
public Voltage5VAdapter(Voltage220V voltage220V) {
this.voltage220V = voltage220V;
}
@Override
public int output5v() {
if(null != voltage220V){
int src = voltage220V.output220v();
int dst = src / 44;
return dst;
}else {
return 0;
}
}
}
5、适配器模式在SpringMVC中的应用
(1)、Spring 定义了一个适配接口,使得每一种conroller有一种对应的适配器实现类。
(2)、适配器代替controller 执行相应的方法。
(3)、扩展controller 时,只需要增加一个适配器类就完成了SpringMVC 的扩展。
路过的朋友们,帮忙点个赞。[玫瑰][玫瑰]
页面更新:2024-04-14
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号