一,Adapter模式详解
-
适配器模式定义
将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类一起工作,其别名为包装器(Wrapper)
二,类适配器
-
类适配器的定义
把适配器的类的api转化为目标类的api -
UML结构图解释
image.png
- 代码详解
public interface Target {
void sampleOperation1();
void sampleOperation2();
}
public class Adaptee {
public void sampleOperation1(){
Log.e("zjy","sampleOperation1");
}
}
public class Adapter extends Adaptee implements Target{
@Override
public void sampleOperation2() {
Log.e("zjy","sampleOperation2");
}
}
Adapter adapter=new Adapter();
adapter.sampleOperation2();
adapter.sampleOperation1();
-
总结
a:类适配器使用对象继承的方式,是静态的定义的方式
b:对于类适配器,适配器可以重新定义adaptee的部分行为
c:对于类适配器,仅仅引入一个对象,并不需要额外的引用来间接得到Adaptee
d:对于类适配器,由于类适配器直接继承了Adaptee,使得适配器不能和Adaptee的子类一起工作
三,对象适配器
-
对象适配器的定义
与类适配器一样,对象的适配器模式把适配的类的API转化为目标类的API,与类适配器模式不同的是,对象的适配器不是使用继承关系连接到Apaptee类,而是使用委派关系连接到Adaptee类 -
UML结构图解释
image.png
-
代码详解
public class AdapterObject implements Target{
private Adaptee adaptee;
public AdapterObject(Adaptee adaptee){
this.adaptee=adaptee;
}
@Override
public void sampleOperation1() {
adaptee.sampleOperation1();
}
@Override
public void sampleOperation2() {
Log.e("zjy","sampleOperation2");
}
}
-
总结
a:对象适配器使用对象的组合,是动态组合的方式
b:对于对象适配器,一个适配器可以把多种不同的源适配到同一目标上
c:对于对象适配器,要重定义adaptee的行为比较困难
b:对象适配器,需要额外的引用间接得到adaptee
四,Adapter模式在android中的应用
- ListView

(1)ListView的布局是是由一条条Item组成,每一个Item又是一个View,通过Adapter适配器这个桥梁将VIew添加到ListView中。
(2)一个Adapter是AdapterView视图与数据的桥梁,adapter提供对数据的访问,也负责为每一个数据产生一个对应的view
(3)每一项数据产生对应的view后,将view添加到Listview中
(4)MVC模式,adapter代表c
网友评论