设计模式 一一一 适配器模式

适配器模式:
	目的:适配器暴露符合外界规范的接口,该接口的具体实现通过调用被适配对象的相应方法来完成。
	
	应用:系统需要使用现有的一个类,但是这个类的接口不符合系统的需要,此时就需要新增一个适配器来解决这个问题。

	角色:
		目标接口:符合外界规范的接口
			
		源对象(被适配的对象):提供相应的功能,但是接口的规范不符合外界的要求
			
		适配器:暴露符合外界规范的接口,通过调用被适配对象的相应方法,然后对其结果进行一定加工来实现。
			
			
jdk中的适配器模式:
	/**
	 * 目标接口:Reader。 
	 * 		说明:Reader的目标是读取数据,但是只能按照字符来读取。
	 * 源对象(被适配的对象):InputStream的子类
	 * 		说明:InputStream可以读数据,但是只能按字节来读取
	 * 适配器:InputStreamReader
	 * 		说明:InputStreamReader通过InputStream来读取数据,并且将读取到的字节流转换为字符流,然后提供给Reader进行读取。
	 */		
	public class InputStreamReader extends Reader {

		// StreamDecoder里面封装了InputStream对象,即InputStreamReader间接地封装了InputStream对象。
		private final StreamDecoder sd;

		/**
		 * 将源对象(被适配的对象)传入进来,这里源对象可以是InputStream的任何一个子类。
		 */
		public InputStreamReader(InputStream in) {
			super(in);
			try {
				sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // 将in封装到sd中。
			} catch (UnsupportedEncodingException e) {
				// The default encoding should always be available
				throw new Error(e);
			}
		}
		
		// 按照字符来读取数据
		public int read() throws IOException {
			return sd.read(); // 使用in来读取数据,然后将读取到的字节流转换为字符流后,再去读取。
		}
	}

	

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值