一.什么是适配器模式
作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
二.适配器模式怎么写
举个例子,我们给手机充电,都会用到充电器,而这个充电器就是适配器,它将220V的电压转成你所需要的电压。所以在做转换的时候会有三个角色,1.target(目标角色)即所需要的5V电压,2.adapter(转换器)即电源适配器,3.adaptee(源角色)即220V的原始电压。下面我们来看看三种写法。
第一种,类适配器,我们来看看UML类图:
转换器和源是通过继承来拿到源角色的方法,然后在通过转换成目标角色所需要的5V,下面来来看看代码
/** 类适配器 被转换接口 理解为220V电压
* @author Seven
*
*/
public class Adaptee {
public int outPut220V() {
return 220;
};
}
/** 目标接口 需要被转换的接口 需要5V的电压
* @author Seven
*
*/
public interface Target {
int request5V();
}
public class Adapter extends Adaptee implements Target{
@Override
public int request5V() {
System.out.println("将220V开始转换成5V");
int change=outPut220V()/4;
return change;
}
}
我们发现通过类适配器确实是可以解决问题,但是它是通过继承来实现的,这样并不符合我们设计原则的第六条,也就是尽量使用合成聚合来解决问题。因为继承的耦合性更大,所以我们便有了第二种对象适配器。
给大家看看UML类图,代码就不贴了
这样代码的耦合性就降低了,但是我们如果扩展性好像并没有那么好,因为Adaptee是一个实现类,并不是一个抽象类或者接口,我们设计模式原则的第三条就是依赖倒置原则即依赖接口/抽象而不依赖实现,于是我们就有了第三种适配器模式,接口适配器模式,下面就上UML类图。
这样写起来,代码是不是就很优雅了。
三.小结
以上内容就是今天所要总结适配器模式,它的出现是为了适配不同的接口,是一种结构性设计模式(通过组合聚合的获取新功能),像我们在Android最常见的适配器就是在设置ListView、GridView、RecycleView中添加适配器了,它将数据转换成视图,详细内容就不多讲了,回头我在整理一下。如果您觉得本文对您有所帮助,欢迎点赞或留下评论,如果觉得本文还要不足之处,也欢迎您在下方吐槽,谢谢!