一:适配器模式概念
建造者模式过完了,从今天开始过结构型模式
在我们的应用程序中我们可能需要将两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。所谓适配器模式就是将一个类的接口,转换成客户期望的另一个接口。它可以让原本两个不兼容的接口能够无缝完成对接。
作为中间件的适配器将目标类和适配者解耦,增加了类的透明性和可复用性。
适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
适配器模式包含如下角色
- Target:目标抽象类
- Adapter:适配器类
- Adaptee:适配者类
- Client:客户类
对象适配器
类适配器:
二: 适配器模式简单代码示例
示例代码:
public interface Target {
void doSomeThing();
}
public class Adaptee {
public void doAdapteeThing() {}
}
类适配器
public class ClassAdapter extends Adaptee implements Target{
@Override
public void doSomeThing() {
doAdapteeThing();
}
}
对象适配器
public class ObjectAdapter implements Target{
private Adaptee adaptee;
public void setAdaptee(Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void doSomeThing() {
adaptee.doAdapteeThing();
}
}
三:接口适配器
除了上面的两种类适配器以及对象适配器外,还有一种接口适配器模式
这个比较简单,其实就是当一个接口要实现的内容太多的时候,给他来个wrapper,则子类只需要
实现这个wrapper就行了。
四:适配器模式与android中的listview,adapter
listview.setadapter 这个方法在开发中经常用,当然现在都换成了Recyclerview了
那么,这里的适配者模式是什么样的呢
首先:
1. adapter就是上面的结构中的Adapter
2.Target则是Adapter implements的接口(
public interface Adapter
)
里面包括getCount getItem等一系列方法
3.那么这里的adaptee是什么呢?
其实就是adapter的数据,基本都是数据List
4.那么client是什么呢?
Client就是ListView本身
-------------------------------------------------
那么,这里的适配器模式是这样的,
ListView想访问 一个数组List<>中的内容,来展现出来,
但是List中的数据不能直接用,
所以这个时候就需要一个适配器Adapter,
Adapter则implement了一些列的target方法。
-----------------------------------------------------
另外,像普通的BaseAdapter其实用的是接口适配器的思想。BaseAapter默认实现了很多方法
那么子类需要实现的方法就少多了。
参考:
https://blog.csdn.net/qq_33768280/article/details/81067880
https://blog.csdn.net/bboyfeiyu/article/details/43950185