美文网首页
适配器模式

适配器模式

作者: andpy | 来源:发表于2018-01-26 11:13 被阅读13次

    适配器 Adapter 模式

    将一个接口转换成客户希望的另一接口,适配器模式使接口不兼容的那些类可以一起工作,别名为包装器(Wrapper)(把每一个view转换成相同的item)

    类适配器

    • 类的适配器模式把适配器的类API转换成为目标类的API
    • UML图


      adapter.png

    创建Adaptee :

    public class Adaptee {
      public   void sampleOperation1(){
            System.out.println("adaptee operation01");
        }
    }
    

    创建Target:

    public interface Target {
        void sampleOperation1();
    
        void sampleOperation2();
    }
    

    创建Adapter:

    public class Adapter extends Adaptee implements Target {
    
        @Override
        public void sampleOperation2() {
            System.out.println("adater operate02");
        }
    }
    

    测试验证:

    public static void main(String[] args){
        Adapter adapter = new Adapter();
        adapter.sampleOperation1();
        adapter.sampleOperation2();
    }
    
    • 类适配器使用对象继承的方式,是静态的定义方式
    • 对于类适配器,适配器可以重定义Adaptee的部分行为
    • 对于类适配器,仅仅引入了一个对象并不需要额外的引用来间接得到Adaptee
    • 由于适配器直接继承了Adaptee,使得适配器不能和Adaptee的子类一起工作

    对象适配器

    对象适配器模式把被适配的类的API转换成为目标类的API,与类的适配器模式不同的是,对象适配器模式,不是使用继承的关系连接到Adapter类,而是使用委派关系连接到Adaptee类的

    Adapter类:

    public class Adapter01 implements Target {
        private Adaptee mAdaptee;
    
        public Adapter01(Adaptee mAdaptee) {
            this.mAdaptee = mAdaptee;
        }
    
        @Override
        public void sampleOperation1() {
            mAdaptee.sampleOperation1();
        }
    
        @Override
        public void sampleOperation2() {
    
        }
    }
    
    • Adapter持有了Adaptee的引用,在adapter中通过adaptee的方法,去实现目标的功能.
    • 对象适配器是使用的是对象组合的方式,是动态组合的方式(委托的方式)。
    • 一个适配器可以把多种不同的源适配器适配到同一个目标。
    • 要重定义Adaptee的行为比较困难
    • 需要额外的引用来间接得到Adaptee.

    ListView中Adapter的运用

    1、ListView中的布局是一条一条的item组成的,每一个item有时一个view,通过adapter适配器这个桥梁将View添加到ListView中
    2、一个Adapter是Adapter,View视图与数据之间的桥梁,Adapter提供对数据的访问,也负责为每一项数据产生一个对应的View。
    3、每一项数据产生对应的View之后,然后将View添加到ListView之中。
    4、mvc结构

    相关文章

      网友评论

          本文标题:适配器模式

          本文链接:https://www.haomeiwen.com/subject/nimiaxtx.html