`
543089122
  • 浏览: 149972 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

简单_适配器模式(Adapter)

阅读更多


jdk中io流InputStreamReader/OutputStreamWriter就运用了适配器模式,
其目的就是为了把字节流接口转换成字符流接口来使用。

写这篇文章使我搞清楚了 代理模式(Proxy)、装饰模式(Decorator)、适配器模式(Adapter)之间的区别,其实写技术文章是个好习惯,虽然有些东西已经懂了但是写着写着又会有一些新的东东产生。希望刚入行的自己能把这个写技术文章的习惯坚持下去。

下面是对该模式的简单理解:

package design.adapter2;


/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午09:31:06 <br>
 * 
 */
public class Test {
	public static void main(String[] args) {
		/*
		 * 以前充的是220V的电压,后来换成110V的电压,所以需要中间加个适配器
		 * VAdapter220To110的作用就是把V220这个接口转换成V110接口
		 * 
		 * 适配器模式(Adapter):
		 * 1、类适配器:看起来和代理模式(Proxy)很相似,适配器类和被适配器类都拥有共同的接口,并且适配器类继承被适配类。
		 * 
		 * 2、对象适配器:把被适配的类做为适配器的属性,然后可以很方便的调用被适配对象的方法,
		 * 其实这也可以看成是静态代理中聚合了被代理类的引用,之前类适配器是继承被适配类的,现在
		 * 不用继承了,为什么呢?因为某些情况下聚合反而比继承要好,比如2个类不存在明显的层级关系,
		 * 如果用继承就不合理了,但是用聚合就非常好,如果两个类存在明显的层级关系却用聚合反而显得不好。
		 * 
		 * 所以适配器模式看起来和代理模式很相似,
		 * 代理模式、装饰模式、适配器模式这3个模式看起都相似,
		 * 相同点:都起到了对被代理/被装饰/被适配  对象的功能上的扩充和访问。
		 * 区别:
		 * 代理模式主要是以控制被代理类为主,
		 * 装饰模式主要是以扩充被装饰类的功能为主,
		 * 适配器模式主要是以对被适配类的转换为主,比如io流中InputStreamReader/OutputStreamWriter
		 * 就是JDK中适配器模式的运用,主要是把字节流转换为字符流。
		 * 
		 * 这3中模式的基本结构是相似甚至是相同的,紧紧是逻辑存在差异,然而GOF却把他们各取一个名字我在想是不是显得有些多余
		 * 甚至是把问题搞复杂了,但有一点可以肯定就是名字区分了其功能。
		 * 比如代理模式,确实是做为一个代理而存在的;
		 * 装饰模式,确实是作为一个装饰而存在的;
		 * 适配器模式很容易就让人想到了充电用的适配器。
		 * 这么说来又确实有必要用3种不同的名字加以区分,在不同的场合下因为各自所起的作用不同,那么名字也就不一样了。
		 */
		V110 v110 = new VAdapter220To110(new V220Impl());
		v110.powerV110();
	}
}

package design.adapter2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午09:33:47 <br>
 */
public abstract class V220 {

	public abstract int powerV220();

}

package design.adapter2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午09:41:51 <br>
 */
public abstract class V110 {

	public abstract int powerV110();

}

package design.adapter2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午09:50:20 <br>
 * 
 */
public class V220Impl extends V220 {

	@Override
	public int powerV220() {
		System.out.println("v220");
		return 220;
	}

}

package design.adapter2;

/**
 * @author 作者 E-mail: jqsl2012@163.com
 * @version 创建时间:2012-2-4 下午09:34:18 <br>
 * 适配器类,负责把V220这个接口转换成V110接口
 */
public class VAdapter220To110 extends V110 {
	private V220 v220;

	//任何V220接口的实现类都可以丢进来,以便V220和V110接口可以相互工作
	public VAdapter220To110(V220 v220) {
		this.v220 = v220;
	}

	@Override
	public int powerV110() {
		int v = this.v220.powerV220();
		System.out.println("经过适配器,220V转换成110V");
		return 110;
	}

}
  • 大小: 81.7 KB
0
0
分享到:
评论

相关推荐

    nodejs-adapter-pattern-example:非常简单的nodejs适配器模式示例

    简单的NodeJs适配器模式示例 这是我对如何使用NodeJS在Javascript中使用适配器模式的简单说明。 现实生活中的示例假装将Json To Xml解析为能够使用项目中集成的旧库进行处理。 西班牙语视频: :

    Adapter适配器模式在JavaScript设计模式编程中的运用分析

    适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)...

    ASP.NET的适配器设计模式(Adapter)应用详解

    前天有一网友问及有关设计模式的适配器模式(Adapter)时,说不太好理解。让Insus.NET能否举个简单的例子来说明一下。下面的动画是Insus.NET做出来的效果: 上面的演示,两个灯的规格一样,要求输入的电压为15伏。 ...

    网络编程、常用设计模式

    详细的jsp网络编程、常用设计模式! 前言 3 第一部分:网络编程 4 ...一、适配器模式(Adapter Pattern) 25 二、类的Adapter模式的结构 25 三、对象的Adapter模式的结构 26 四、在什么情况下使用适配器模式 26

    PHP实现的简单适配器模式示例

    本文实例讲述了PHP实现的简单适配器模式。分享给大家供大家参考,具体如下: &lt;?php //适配器模式-通过适配器去执行第三方方法 //定义目标接口 interface Target{ public function simpleMethod1(); public ...

    Java设计模式,并加上个人理解

    7. 适配器模式 (Adapter Pattern) 8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite Pattern) 12. 装饰者模式 ...

    c++设计模式全系列+应用场景+实例说明

    1. **工厂模式(Factory Pattern)**:工厂模式是一种创建型...6. **适配器模式(Adapter Pattern)**:适配器模式是一种结构设计模式,允许接口不兼容的类能够一起工作,将一个类的接口转换成客户希望的另一个接口。

    Java与模式.清晰.rar

    Java与模式.清晰.rar 第一部分 第1章 模式的简史和形而上学 第2章 统一建模语言UML简介 第二部分 第3章 软件的可维护性与可复用性 第4章 “开-闭”原则 第5章 专题:Java语言的接口...第22章 适配器(Adapter)模式[1]

    研磨设计模式(完整带书签).part2.pdf

    第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章...

    C#设计模式.PDF

    六、 在什么情况下使用适配器模式 85 七、 一个实际应用Adapter模式的例子 85 八、 关于Adapter模式的讨论 87 C#设计模式(11)-Composite Pattern 88 一、 合成(Composite)模式 88 二、 合成模式概述 88 三、 ...

    C# 设计模式系列教程-适配器模式

    通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。

    C#设计模式大全

    六、 在什么情况下使用适配器模式 七、 一个实际应用Adapter模式的例子 八、 关于Adapter模式的讨论 C#设计模式(11)-Composite Pattern 一、 合成(Composite)模式 二、 合成模式概述 三、 安全式的合成...

    Delphi模式编程第一分卷

    第9章 适配器模式(Adapter) 9.1 模式解说 9.2 结构和用法 9.2.1 类的适配器模式 9.2.2 对象的适配器模式 9.2.3 问题讨论 9.3 范例与实践 9.3.1 用适配器模式包装第三方API的范例 9.3.2 范例小结 第10章 ...

    [源代码] 《易学 设计模式》 随书源代码

    第10章 改头换面:适配器模式 (Adapter) 第11章 越俎代庖:代理模式 (Proxy) 第12章 真人不露相:装饰模式 (Decorator) 第13章 游刃有余:桥模式 (Bridge) 第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:...

    Delphi模式编程第二分卷

    第9章 适配器模式(Adapter) 9.1 模式解说 9.2 结构和用法 9.2.1 类的适配器模式 9.2.2 对象的适配器模式 9.2.3 问题讨论 9.3 范例与实践 9.3.1 用适配器模式包装第三方API的范例 9.3.2 范例小结 ...

    23种设计模式的java源代码

    里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些代码对于初学者看起来稍微复杂一些,我...

    捕鱼java源码-adapter:适配器

    在软件工程中,适配器模式是一种软件设计模式,它允许将现有类的接口用作另一个接口。 它通常用于使现有类与其他类一起工作,而无需修改其源代码。 程序示例 考虑一个只能使用划艇而根本不能航行的船长。 首先我们有...

    研磨设计模式(完整带书签).part1.pdf

    第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章...

    源码:阎宏设计模式光盘

    com.javapatterns.adapter 适配器模式 com.javapatterns.bridge 桥梁模式 com.javapatterns.builder 建造者模式 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.chainofresp 责任链模式 ...

Global site tag (gtag.js) - Google Analytics