我是靠谱客的博主 冷酷鲜花,最近开发中收集的这篇文章主要介绍适配器模式--我是万能胶(创建型模式05),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是适配器模式?
使原本因接口不匹配而无法融合的两个类或对象可以融合。
适配器,我们在日常开发中很常见,基本上看到Adapter字符都是使用了适配器模式,他就像第三方的转接,A和B认识,B和C认识,A想认识C的话,常规思维是不是通过B来介绍?这里B就充当了适配器的角色。

适配器模式适用场景
输入无法预知,输出要求一致;
系统要使用一个不认识的类,通过适配器来转接他认识的类。(接口不兼容)


接下来我们介绍两种适配器模式:

  1. 类适配器模式
  2. 对象适配器模式

适配器中的角色
Target:目标角色,即接口;
Adapter:适配器角色;
Adaptee:被改变者。
举个例子,通常笔记本电脑的电源适配是12V,我们不能把220V电源直接插到电脑上用吧,有一个长方体的变压器把220V电源变成12V来使用。这里220V电源相当于Adaptee(被改变者),变压器相当于Adapter(适配器角色),而改变后的5V电源是Target(目标角色)。


1.类适配器模式

UML类图:
这里写图片描述

Target角色:

public interface IVolt12{//目标电源12V
public void getVolt12();
}

Adaptee角色:

public class Volt220{//被改造者220V电源
public void getVolt220(){
System.out.println("获得220V电源");
}
}

Adapter角色:

public class VoltAdapter extends Volt220 implements IVolt12{
public void getVolt12(){
System.out.println("获得12V电源");
}
}

电源转换调用:

public class Test{
public void main(String[] args){
VoltAdapter adapter = new VoltAdapter();
adapter.getVolt220();//获得220V电源
adapter.getVolt12();//获得12V电源
}
}

调用结果:

获得220V电源
获得12V电源

2.对象适配器模式

UML类图:
这里写图片描述

Target角色:

public interface Volt12{//目标电源12V
public void getVolt12();
}

Adaptee角色:

public class Volt220{//被改造者220V电源
public void getVolt220(){
System.out.println("我是220V电源");
}
}

对象适配器模式:

public class VoltAdapter implements IVolt12{
Volt220 mV220 = new Volt220();
//注意接入220V电源,否则无法转换哦
public VoltAdapter(Volt220 v){
mV220 = v;
}
public void getVolt220(){
mV220.getVolt220();
}
public void getVolt12(){
System.out.println("获得12V电源");
}
}

电源转换调用:

public class Test{
public void main(String[] args){
VoltAdapter adapter = new VoltAdapter(new Volt220);
adapter.getVolt220();//获得220V电源
adapter.getVolt12();//获得12V电源
}
}

总结:类适配器和对象适配器如上例子所示,区别在于,对象适配器需要将被改造者传入适配器中,比类适配器更加灵活,还有一个好处就是你不知道传入对象的操作方法,更加安全了。类适配继承了传入对象,所以全都暴露出来了,所以开发中推荐使用对象适配器模式。

优点:
高复用性:通过适配器模式让本不兼容系统的类适用性更广。
扩展性强:实现适配器时我们可以调用自己的操作,从而达到扩展功能目的。

缺点:
过多使用,会让整个项目凌乱。比如A认识B,B认识C,A想通过B去认识C,但是C带了朋友D(class C implements D),A怎么能和C打招呼而不和旁边的D打招呼?这个关系如果多了是有点乱哈。

最后

以上就是冷酷鲜花为你收集整理的适配器模式--我是万能胶(创建型模式05)的全部内容,希望文章能够帮你解决适配器模式--我是万能胶(创建型模式05)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部