• 适配器模式


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

    使用步骤:

    步骤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类。

  • 相关阅读:
    KETTLE封装
    基于MODBUS-RTU协议的串口编程
    阿里DRUID 配置说明及分析
    CopyOnWriteArrayList集合排序异常问题
    CopyOnWriteArrayList集合线程安全解释
    JAR包数字签名与验证
    MySQL中select * for update锁表的范围
    Kettle文本文件输出和输入控件使用中,换行符导致的问题处理
    UAP如何根据DeviceFamily显示不同的页面
    Windows 10 响应式设计和设备友好的开发
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6875517.html
Copyright © 2020-2023  润新知