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

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

    使用步骤:

    步骤1: 创建Target接口;

    public interface Target {
    
        //这是源类Adapteee没有的方法
        public void Request(); 
    }

    步骤2: 创建源类(Adaptee) ;

    public class Adaptee {
    
        public void SpecificRequest(){
        }
    }

    步骤3: 创建适配器类(Adapter)

    //适配器Adapter继承自Adaptee,同时又实现了目标(Target)接口。
    public class Adapter extends Adaptee implements Target {
    
        //目标接口要求调用Request()这个方法名,但源类Adaptee没有方法Request()
        //因此适配器补充上这个方法名
        //但实际上Request()只是调用源类Adaptee的SpecificRequest()方法的内容
        //所以适配器只是将SpecificRequest()方法作了一层封装,封装成Target可以调用的Request()而已
        @Override
        public void Request() {
            this.SpecificRequest();
        }
    
    }

    步骤4: 定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标

    public class AdapterPattern {
    
        public static void main(String[] args){
    
            Target mAdapter = new Adapter();
            mAdapter.Request();
    
        }
    }

    IO中的适配器模式:

    InputStreamReader和OutputStreamWriter类分别继承了Reader和writer接口,但是要创建他们的对象必须在构造函数中传入一个InputStream和OutputStream

    的实例,InputStreamReader和OutputStreamWriter类的作用也就是将InputStream和OutputStream适配到Reader和Writer。

    适配器是InputStreamReader,源角色是InputStream代表的实例对象,目标接口就是Reader类。

  • 相关阅读:
    刚刚开通
    腾讯面试经历2015
    排序之归并排序
    AC自动机
    后缀数组初步
    概率dp初探
    【NOIP2015】反思+题解
    Built-in functions
    poj2528 Mayor's posters(线段树区间覆盖)
    Codeforces #317 C.Lengthening Sticks(数学)
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6875517.html
Copyright © 2011-2022 走看看