- 浏览: 197611 次
- 性别:
- 来自: 上海
文章分类
最新评论
[b]GOF《设计模式》一书对Adapter模式是这样描述的:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:
1) 为都有“显示”(display)行为的点、线、正方形分别创建类。
2) 客户对象不必知道自己到底拥有点、线、还是正方形。它只需知道拥有这些形状中的一个。
也就是说,我们要用一个更高层次的概念将这些具体形状都涵盖进去,这个高层概念可以称为:“可显示的形状”。因此,我们需要创建一个接口Shape:
现在客户忽然间有让我们给这个系统增加一个画圆的功能。这个看起来很简单,只需定义一个Circle类来实现Shape接口,但是我们要给它编写display方法,这可不是件简单的事,假如此时我们正好发现一个XXCircle类,它有一个方法刚好可以完成这个功能,那么有没有更好的方法来利用它呢,这时我们就要用到Adapter模式了。XXCircle代码如下:
Adapter模式有两种类型:
1) 对象Adapter模式,它依赖于一个对象(适配器)包含另一个对象(被适配的对象)。
2) 类Adapter模式,它是通过多重继承来实现的(java中没有多继承,是通过接口来实现的)。[/b]
小结:Adapter模式是一个很常用的模式,它将一个(或多个)类的接口转换成我们需要类所具备的一个接口。它的实现方式是:创建一个具备所需接口的类,然后包装原有类的方法,这样实际上就包含了被适配的对象。它主要适用于以下几种情况:
1) 你希望使用他人编写的子程序或方法,因为你需要它所执行的功能。
2) 你无法将这个子程序直接加入程序中。
3) 子程序的接口或调用方式与需要使用它的相关对象不完全相同。
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:
1) 为都有“显示”(display)行为的点、线、正方形分别创建类。
2) 客户对象不必知道自己到底拥有点、线、还是正方形。它只需知道拥有这些形状中的一个。
也就是说,我们要用一个更高层次的概念将这些具体形状都涵盖进去,这个高层概念可以称为:“可显示的形状”。因此,我们需要创建一个接口Shape:
interface Shape{ publicvoid display(); }
现在客户忽然间有让我们给这个系统增加一个画圆的功能。这个看起来很简单,只需定义一个Circle类来实现Shape接口,但是我们要给它编写display方法,这可不是件简单的事,假如此时我们正好发现一个XXCircle类,它有一个方法刚好可以完成这个功能,那么有没有更好的方法来利用它呢,这时我们就要用到Adapter模式了。XXCircle代码如下:
class XXCircle{ public void displayCircle(){ System.out.println("通过XXCircle.displayCircle()画圆"); } }
Adapter模式有两种类型:
1) 对象Adapter模式,它依赖于一个对象(适配器)包含另一个对象(被适配的对象)。
class CircleObject implements Shape{ public XXCircle circle; public CircleObject(XXCircle xxcircle){ circle=xxcircle; } public void display() { circle.displayCircle(); } } public class Client { public static void main(String[] args) { XXCircle circle=new XXCircle(); CircleObject co=new CircleObject(circle); co.display(); } }
2) 类Adapter模式,它是通过多重继承来实现的(java中没有多继承,是通过接口来实现的)。[/b]
class CircleClass extends XXCircle implements Shape{ public void display() { super.displayCircle(); } } public class Client { public static void main(String[] args) { CircleClass cc=new CircleClass(); cc.display(); } }
小结:Adapter模式是一个很常用的模式,它将一个(或多个)类的接口转换成我们需要类所具备的一个接口。它的实现方式是:创建一个具备所需接口的类,然后包装原有类的方法,这样实际上就包含了被适配的对象。它主要适用于以下几种情况:
1) 你希望使用他人编写的子程序或方法,因为你需要它所执行的功能。
2) 你无法将这个子程序直接加入程序中。
3) 子程序的接口或调用方式与需要使用它的相关对象不完全相同。
发表评论
-
Java 5 并发学习(转)
2012-06-26 14:38 859Java 5 并发学习 在Java5之后,并发线程这块发生 ... -
WeakHashMap和HashMap的区别
2012-02-24 13:42 843http://mzlly999.iteye.com/blog/ ... -
动态代理的演示
2012-02-24 10:24 955使用动态字节码生成技术实现AOP原理是在运行期间目标字节码加载 ... -
volatile 的高级模式
2012-02-22 13:07 731前面几节介绍的模式涵盖了大部分的基本用例,在这些模式中使用 v ... -
The "Double-Checked Locking is Broken" Declaration
2012-02-22 10:34 957http://www.cs.umd.edu/~pugh/jav ... -
Log4j配置文件详细说明[转]
2012-02-14 10:48 1344属性文件Properties properties属性文件 ... -
Log4j的配置文件
2012-02-14 10:42 811Log4j支持两种配置文件格式,一种是java属性文件(键—值 ... -
单例模式的俩种方式
2012-01-04 14:09 921等等 单例模式的俩种方式: 饿汉式 class Singlet ... -
代理模式(静态以及动态)
2011-12-23 11:01 918代理接口: package ProxyPattern; ... -
Mysql连接数据库:PreparedStatement.addBatch()方法
2011-12-23 08:43 58171.Eclipse连接MySQL数据库 mysql>C ... -
java中ArrayList 、LinkList区别
2011-12-21 15:30 1168java中ArrayList 、LinkList、List区别 ... -
Thread的实现
2011-12-21 14:25 1201Making a Thread A thread in Jav ... -
Date4j,一个简约的日期处理类库
2011-12-14 10:13 832Java本身的日期类在JDK1.0版本之后就再也没有更新过,同 ... -
How to use Log4j
2011-09-29 13:57 8071. LogManager.getInstance().get ... -
重写hashCode和equals方法(转)
2011-09-27 09:58 1131如果你的对象想散列存 ... -
学习Enum转
2011-09-22 14:11 8721. 关于 Java Enum: 学过 C/C++ 等 ... -
PO BO VO DTO POJO DAO概念及其作用(转)
2011-09-20 09:49 662J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨 ... -
Thread的实现
2011-09-20 09:47 856Thread的实现 1.extend Thread,then ... -
Java的代理模式(通过公共接口实现)转
2011-08-23 14:51 1192代理模式的一种常见的实现方案是,定义一个接口或抽象类,并派生出 ... -
JVM常见配置汇总
2011-08-15 14:56 1902从这个图中可以看到, ...
相关推荐
Adapter模式是一种设计模式,主要目的是解决不同接口之间不兼容的问题,使得原本无法协同工作的类能够协同工作。在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类...
Adapter模式是软件设计模式中的一种结构型模式,它在C++中的应用广泛,主要用于解决不同接口之间不兼容的问题,使得原本由于接口不匹配而无法一起工作的类能够协同工作。Adapter模式通过创建一个适配器对象,将旧的...
Adapter模式是一种结构型设计模式,它允许不兼容的类或接口之间进行通信。在软件开发中,我们常常遇到这样的情况:需要使用一个已经存在的类,但是它的接口与我们的需求不匹配,这时候Adapter模式就能派上用场。它...
本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...
Adapter模式的关键特征是创建一个中间层(适配器),将Adaptee(被适配对象)的接口转换成Target(目标接口)。适配器封装了Adaptee,并实现了Target接口。这样,客户端就可以通过Target接口与Adaptee进行交互,而不...
Adapter模式是一种软件设计模式,它允许不兼容的接口之间进行通信。在Java或者其他面向对象语言中,Adapter模式常被用来解决新旧系统对接、不同组件间的接口不匹配等问题。通过Adapter,我们可以让原本无法协作的...
- **适配器(Adapter)**:适配器类实现了目标接口,内部持有一个原始接口的引用或实例,负责将原始接口的调用转换为目标接口的调用。 - **客户端(Client)**:客户端使用目标接口进行操作,对适配器和原始接口一无所知...
介绍24设计模式中的Adapter模式,如果使用,实例讲解,等等
Adapter模式是一种设计模式,它允许不兼容的类之间进行通信,通过创建一个适配器类作为中介,将原有接口转换成目标接口。在本练习中,我们将会深入探讨Adapter模式的原理、应用场景以及如何实现。 Adapter模式主要...
适配器模式(Adapter pattern)是软件设计模式中的一种,其主要目的是解决系统间接口不兼容的问题,使得原本无法直接协作的类或者组件能够协同工作。在“Head First 设计模式”这本书中,适配器模式被深入浅出地讲解...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式被广泛应用于解决系统间的兼容性问题,尤其是当我们需要将一个已有的类库或者对象与我们的系统接口相匹配时。汽车适配器的...
设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...
例如,`InputStreamReader`是Adapter模式的一个实例,它将`InputStream`(处理字节流)适配为`Reader`(处理字符流),这样原本只能处理字节流的程序可以通过适配器使用字符流。同样,`OutputStreamWriter`则将`...
【Adapter模式】 Adapter模式是一种设计模式,它允许不同接口的类之间进行通信。在Android开发中,Adapter模式常用于将数据源(如数组、列表)与视图(如ListView、GridView)进行适配,使得数据能够正确地显示在UI...
2. 适配者(Adapter)类:实现了目标接口,是适配的核心,负责将适配者对象的接口转换为目标接口。 3. 适配者(Adaptee)类:是待适配的原始接口或类,可能已经存在并且不能或不便修改。 4. 客户端(Client):使用目标...
《C++设计模式:Adapter模式解析与应用》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它代表了最佳实践,并已被广泛接受。Adapter模式,也称为适配器模式,是设计模式中的一种,它允许两个不兼容...
3. 适配器(Adapter):实现了目标接口,并持有对适配者的引用,负责将适配者接口转换为客户期望的目标接口。 适配器模式的优点: 1. 增强了类的复用性,可以利用已有的类进行扩展,而不必修改原有代码。 2. 提高了...