zoukankan      html  css  js  c++  java
  • 适配器模式 在Android中的简单理解

    Android

    在Android上提到适配器模式就会想到最常用的ListView和BaseAdapter

    在这个功能的使用中,类似于适配器模式的对象适配器

    例如在ListView中想用一个getView()方法,但是不同的数据,不同的需求,会有不同的getView()结果,所以getView()不能写死了,那么可能就想到了用适配器模式

    所以ListView里面包含了一个ListAdapter的成员变量,实际上是ListView继承了AbsListView,ListAdapter变量是在AbsListView中声明的

    然后BaseAdapter是实现了ListAdapter的,那么我们自定义的***Adapter继承了BaseAdapter,其实也就相当于间接实现了ListAdapter,并且***Adapter会具体去实现getView()方法

    那么ListView就可以通过调用setAdapter(ListAdapter adapter)方法,将***Adapter传进去,从而实现了我们想要的结果

    Java

    适配器模式有两种:

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

    场景:

    假如A类想用M方法,X类有M方法,但是M方法的结果不一定完全符合A类的需求

    那么X类就是写死了,不好用,这样设计不好

    那就把X类换成一个接口,弄出一些B,C,D,E.....类中间类出来,让他们都有一个方法来处理M方法的东西,再给A类用

    类适配器:

    设计一个接口I,让他也有M方法

    然后设计一个B类,写好符合A类需求的specialM方法

    然后让A类继承B类,并实现I接口的M方法

    最后在A类的M方法中以super的方式调用B类的specialM方法

    对象适配器:(更多是用对象适配器)

    设计一个接口I,让他也有M方法

    然后设计一个B类,写好符合A类需求的specialM方法

    然后在A类中声明一个B类变量,并且A类实现I接口,那么A类也就有了M方法

    最后在A类的M方法中,如果需要,就可以选择调用B类的specialM方法

    或者设计一个B类,实现I接口的M方法

    然后在A类中声明一个I类变量,再直接调用I接口的M方法

    在调用A类的M方法之前,通过例如setAdapter(I Adapter)这样的方法,将B类设置成A类的成员变量

    这样就保证了A类和I接口不变,适配不同情况的时候,写一个类似B类的中间类进行适配就可以了

    总之,两端不变,通过不同的选择方式,选择不同的中间类,也就是适配器模式了

    适配器模式参考链接

  • 相关阅读:
    Linux内核将要支持最新龙芯3A2000/3B2000
    微软拥抱Linux,着实太晚了
    武校学生
    第一篇 SCI 综述被接收的感想
    如何使用Rally+Docker测试OpenStack
    (OK) ntp——linux设置系统时间—RHEL—FEDORA—CENTOS
    理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
    (OK) find-alter-files.sh——递归
    (OK) digui-gb18030-utf8.sh——递归
    (OK) digui-dir-del-M.sh——递归
  • 原文地址:https://www.cnblogs.com/imeiling/p/6394738.html
Copyright © 2011-2022 走看看