设计模式-适配器模式(adapter)
对于adapter模式一般理解为 将两种不同的接口定义进行转换
例如:java字节流和字符流之间转换
/* * Copyright (c) 2020, guoxing, Co,. Ltd. All Rights Reserved */ package com.xingguo.io.characterstream; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; /** * InputStreamToReaderDemo * * @author guoxing * @date 2020/12/5 2:33 PM * @since */ public class InputStreamToReaderDemo { public static void main(String[] args) { InputStream in = System.in; // 适配器模式 // 对于适配器模式 (IN 类型,OUT类型), 需要注入IN类型数据,并输出OUT类型数据 // 适配对象属于OUT类型数据,注入的是IN类型数据,且对于OUT和IN类型没有任何层次关系 InputStreamReader inputStreamReader = new InputStreamReader(in, StandardCharsets.UTF_8); } }
关于适配器模式存在以下几种使用场景
- 类适配器
- 对象适配器
- 接口适配器
关于类适配器
其原理是通过继承来实现;
对于继承的理解为,存在A,B两个接口,AL实现了A接口,适配器通过继承AL类以及实现B接口的方式,从而实现将 A接口的规范转换为B接口的规范搭配适配器的目的;
关于对象适配器
原理是通过组合的方式将要适配的接口对象(具体实现)进行注入,实现转换;
对于组合的理解为,存在A,B两个接口,适配器通过实现B接口,并将A接口设置为对象属性,提供有参构造器,对于适配器中重写的B接口方法,内部通过A接口对象实现 将A接口规范转换为B接口规范;
对于类适配器和对象适配器的区别在于 对于类适配器其需要继承具体的类具有一定的局限性;而对于对象适配器,由于在对象适配器中将接口作为对象属性,利用面向接口编程特征,其并不局限于单一的实现,可以实现类似于多态的特性
关于接口适配器
原理是通过使用抽象类实现接口,而对于具体的实现类通过继承抽象类,有选择的进行重写实现(类似于 Filter (过滤器模式));

浙公网安备 33010602011771号