`
jaesonchen
  • 浏览: 309870 次
  • 来自: ...
社区版块
存档分类
最新评论

adapter 模式

 
阅读更多
package com.jaeson.javastudy.designpattern;

/**
 * java io 的字节/字符流 转换使用了adapter模式,InputStreamReader、OutputStreamWriter
 * 
 * 将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
 * 
 * 类适配器:Adapter extends Adaptee implements IService		
 * 使用场景:当你想使用一个已经存在的类,而它的接口不符合你的需求。
 * 
 * 对象适配器(持有Adaptee对象):Adapter implements IService  
 * 使用场景:你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父亲接口。
 * 
 * Facade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。
 */
public class AdapterPattern {

	public static void main(String[] args) {
		
		IReader objectAdater = new InputStreamReader(new FileInputStream());
		String result = objectAdater.readLine();
		System.out.println(result);
		
		objectAdater = new InputStreamReader(new ByteArrayInputStream());
		result = objectAdater.readLine();
		System.out.println(result);
		
		IReader classAdater = new InputStreamAdapter();
		result = classAdater.readLine();
		System.out.println(result);
	}
}
//类适配器
class InputStreamAdapter extends FileInputStream implements IReader {
	public InputStreamAdapter() {
		super();
	}
	@Override public String readLine() {
		
		byte[] buff = super.read();
		return new String(buff);
	}
}
//对象适配器
class InputStreamReader implements IReader {
	private IInputStream input;
	public InputStreamReader(IInputStream input) {
		this.input = input;
	}
	
	@Override public String readLine() {
		
		byte[] buff = this.input.read();
		return new String(buff);
	}
}

class ByteArrayInputStream implements IInputStream {
	@Override public byte[] read() {
		
		byte[] result = new byte[128];
		for(int i = 0, j = result.length; i < j; i++)
			result[i] = (byte) i;
		
		return result;
	}
}
class FileInputStream implements IInputStream {
	@Override public byte[] read() {
		
		byte[] result = new byte[128];
		for(int i = 0, j = result.length; i < j; i++)
			result[i] = (byte) (i + 32);
		
		return result;
	}
}

 

分享到:
评论

相关推荐

    设计模式之Adapter模式和代码实现

    Adapter模式是一种设计模式,主要目的是解决不同接口之间不兼容的问题,使得原本无法协同工作的类能够协同工作。在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类...

    C++ Adapter 模式

    Adapter模式是软件设计模式中的一种结构型模式,它在C++中的应用广泛,主要用于解决不同接口之间不兼容的问题,使得原本由于接口不匹配而无法一起工作的类能够协同工作。Adapter模式通过创建一个适配器对象,将旧的...

    ②设计模式之Adapter模式

    Adapter模式是一种结构型设计模式,它允许不兼容的类或接口之间进行通信。在软件开发中,我们常常遇到这样的情况:需要使用一个已经存在的类,但是它的接口与我们的需求不匹配,这时候Adapter模式就能派上用场。它...

    Adapter模式

    Adapter模式是一种软件设计模式,它允许不兼容的接口之间进行通信。在Java或者其他面向对象语言中,Adapter模式常被用来解决新旧系统对接、不同组件间的接口不匹配等问题。通过Adapter,我们可以让原本无法协作的...

    Java-从Decorator,Adapter模式看Java/IO

    例如,`InputStreamReader`是Adapter模式的一个实例,它将`InputStream`(处理字节流)适配为`Reader`(处理字符流),这样原本只能处理字节流的程序可以通过适配器使用字符流。同样,`OutputStreamWriter`则将`...

    设计模式1,FACADE模式,Adapter

    本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...

    Adapter模式实战之重构鸿洋集团的Android圆形菜单建行

    【Adapter模式】 Adapter模式是一种设计模式,它允许不同接口的类之间进行通信。在Android开发中,Adapter模式常用于将数据源(如数组、列表)与视图(如ListView、GridView)进行适配,使得数据能够正确地显示在UI...

    设计模式之适配器模式(Adapter模式)

    介绍24设计模式中的Adapter模式,如果使用,实例讲解,等等

    Adapter模式练习

    Adapter模式是一种设计模式,它允许不兼容的类之间进行通信,通过创建一个适配器类作为中介,将原有接口转换成目标接口。在本练习中,我们将会深入探讨Adapter模式的原理、应用场景以及如何实现。 Adapter模式主要...

    FlowTag-Android流式布局,支持点击、单选、多选,支持初始化选中标签(只针对单选和多选模式),适合用于产品标签等,用法采用Adapter模式,和ListView、G.zip

    Android流式布局,支持点击、单选、多选等,适合用于产品标签等,用法采用Adapter模式,和ListView、GridView用法一样!2016/6/26号新添加初始化标签功能,使用非常简单,只要你的Adapter实现OnInitSelectedPosition...

    Adapter(适配器模式)

    - **适配器(Adapter)**:适配器类实现了目标接口,内部持有一个原始接口的引用或实例,负责将原始接口的调用转换为目标接口的调用。 - **客户端(Client)**:客户端使用目标接口进行操作,对适配器和原始接口一无所知...

    Java优良的Adapter模式:适配器模式

    自己总结了一个在性能和结构上都很容易理解的Adapter模式。  Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口...

    python实现Adapter模式实例代码

    Adapter模式,也称为适配器模式,是一种设计模式,它允许不同接口的类协同工作。在Python中,适配器模式常用于解决新旧接口不兼容的问题,通过创建一个新的类(适配器)来包装原有类(适配者),使得原本不兼容的...

    C++设计模式代码资源16_Adapter.zip

    《C++设计模式:Adapter模式解析与应用》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它代表了最佳实践,并已被广泛接受。Adapter模式,也称为适配器模式,是设计模式中的一种,它允许两个不兼容...

    小例子背后的大道理——Adapter模式详解

    前文说到一位用户拿着业界标准开关(一个标准的StandardSwitcher,它依赖IStandardSwitchable接口才能工作,然而目前我们的灯并不支持这个...我想来解释一下Adapter模式的要点是什么,对Adapter模式的延展,以及对Adap

    1-7Adapter基础讲解

    在IT行业中,Adapter模式是一种设计模式,它在不同的接口之间起着桥梁的作用,允许不兼容的类协同工作。本主题将深入探讨Adapter的基础知识,帮助你理解其原理、应用场景及实现方式。 Adapter模式的主要作用是解决...

Global site tag (gtag.js) - Google Analytics