zoukankan      html  css  js  c++  java
  • 适配器模式

    适配器模式:

      把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法再一起工作的两个类能够在一起工作。

      注:可以研究inputStreamReader。

      现有两个接口Target Adaptee。Traget接口有方法showInfo(),Adaptee接口有方法info()。

    package com.zhao.service;
    /**
     * Target(目标接口):所要转换的所期待的接口
     * @author zhao
     *
     */
    public interface Target {
        public void showInfo();
    }
    package com.zhao.service;
    /**
     * 需要适配的接口
     * @author zhao
     *
     */
    public interface Adaptee {
        public String info();
    }

    现在的情况是,Target接口和Adaptee接口无法在一起工作,但是Target接口需要用到Adaptee接口,不然无法显示信息。所以需要一个适配器。

    package com.zhao.service.impl;
    
    import com.zhao.service.Adaptee;
    import com.zhao.service.Target;
    
    public class Adaper implements Target {
        private Adaptee adaptee;
        public Adaper(Adaptee adaptee) {
            this.adaptee=adaptee;
        }
        
        @Override
        public void showInfo() {
            System.out.println(adaptee.info());
        }
    
    }

    当需要显示信息时,在主方法里:

    package com.zhao.main;
    
    import com.zhao.service.Target;
    import com.zhao.service.impl.Adaper;
    import com.zhao.service.impl.AdapteeImpl;
    
    public class Main {
    
        public static void main(String[] args) {
            Target target=new Adaper(new AdapteeImpl());
            target.showInfo();
        }
    
    }

    AdapettImpl继承了接口Adaptee。

    package com.zhao.service.impl;
    
    import com.zhao.service.Adaptee;
    
    public class AdapteeImpl implements Adaptee{
    
        @Override
        public String info() {
            return "zhao";
        }
    }

    由此可以看出:适配器主要是为了整合两个实现类,他们各自实现了一个接口,这两个接口并不能一起工作,以至于两个类不能一起工作,我们可以把其中的一个类用作适配器类,它实现了自己的接口,重写了相应的方法。在此时,给它添加了一个另外一个接口的对象,通过构造函数或者是setter方法,传进来另外接口的实现类,在适配器类重写的方法中,进行对另外接口方法的操作。

      (以下内容摘自  许令波《深入分析Java Web技术内幕》)

       InputStreamReader实现了Reader接口,并且持有了InputStream的引用,这里是通过StreamDecoder类简介持有的,因为从byte到char要经过编码。很显然,适配器就是InputStreamReader类,源角色就是InputStream代表的实例对象,目标接口就是Reader类。

      

  • 相关阅读:
    默认构造函数
    Android笔记(二十八) Android中图片之简单图片使用
    Android笔记(二十七) Android中的动态广播和静态广播
    Android笔记(二十六) Android中的广播——BroadcastReceiver
    <转> Android LayoutInflater详解
    Android笔记(二十五) ListView的缓存机制与BaseAdapter
    Android笔记(二十四) Android中的SeekBar(拖动条)
    Android笔记(二十三) Android中的ProgressBar(进度条)
    Android笔记(二十二) Android中的GridView
    Android笔记(二十一) Android中的Adapter
  • 原文地址:https://www.cnblogs.com/zhao307/p/5372511.html
Copyright © 2011-2022 走看看