设计模式-Adapter

一,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
image.png

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容