- 浏览: 977066 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Mr.Cheney:
去掉 UUID字符串中的“-” 直接replaceAll(&q ...
JAVA生成全局唯一ID 使用 java.util.UUID -
呜哩喵:
楼主nice
java中的时间操作 -
zxs6587:
Thinking inJava我读着好像说要建立基类对象啊!请 ...
创建子类的对象时也要创建其所有父类的对象? -
just_Word:
getFullYear
date.getyear -
JamesQian:
我觉得楼上的synchronized(this),notify ...
notify() wait()
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而能一起工作的类可以一起工作。
Adapter模式:关键特征
意图:使控制范围之外的一个原有对象与某个接口匹配。
问题:系统的数据和行为都正确,但接口不符。通常用于必须从抽象类派生时。
解决方案:Adapter模式提供了具有所需接口的包装类。
参与者与协作者: Adapter改变了Adaptee的接口,使Adaptee与Adapter的基类Target匹配。这样Client就可以使用Adaptee了,好像它是Target类型。
效果:Adapter模式使原有对象能够适应新的结构,不受其接口的限制。
实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包含类的方法。
Adapter模式有两种类型:对象Adapter模式、类Adapter模式。
Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成另一个接口。
场景
相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。
我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有 CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示,可是这两个部件却是不兼容的。于是我们需要一个中间设备,它能够将CPU“适配”于显示器,这便是我们的显卡——图形适配器(Adapter)。
java 代码
1. // 图形发送设备
2. public class Target {
3. /**
4. * 传送图形信号
5. */
6. public String request() {
7. return "Graphic sender";
8. }
9. }
java 代码
1. // 显示器
2. public class Client {
3.
4. public static void main(String[] args) {
5. Target target = new Targete();
6. System.out.println(target.request());
7. }
8. }
可是我们的CPU(Adaptee)只能输出0/1数据,他是个计算器,而不是图形发送设备(Target)。
java 代码
1. // CPU
2. public class Adaptee {
3. /**
4. * CPU输出的数据
5. */
6. public String getData() {
7. return "CPU data";
8. }
9. }
这个时候我们的显卡(Adapter)的作用便体现出来了,它负责对CPU进行适配,通过将CPU传过来的数据转换成图形信号,从而将CPU伪装成一个图形发送设备。
java 代码
1. // 显卡,即我们的适配器
2. public class Adapter extends Target {
3.
4. // 被代理的设备
5. private Adaptee apt = null;
6.
7. /**
8. * 装入被代理的设备
9. */
10. public Adapter(Adaptee apt) {
11. this.apt = apt;
12. }
13.
14. /**
15. * 被代理的设备传过来的数据转换成为图形输出
16. */
17. public String request() {
18. return apt.getData();
19. }
20. }
这样,我们的电脑的显示流程就变成CPU-显卡-显示器:
java 代码
1. public class Client {
2.
3. public static void main(String[] args) {
4. // CPU经过显卡的适配后“变”成了图形发送装置了
5. Target target = new Adapter(new Adaptee());
6. System.out.println(target.request());
7. }
8.
9. }
上面的这种依赖于对象组合的Adapter模式叫做对象适配器(Object Adapter)。它的特征是继承/实现某一方的类(Target),如这里的图形发送器,同时内部包含一个被适配的类(Adaptee),如这里的CPU。通过重写其父类的方法来进行适配。
另一种的Adapter实现
对于Adapter模式,还有另外一种实现方式,这种适配方式叫做类适配器(Class Adapter)。它与Object Adapter的不同之处在于它继承被适配的对象。
java 代码
1. public class Adapter extends Targer, Adaptee {
2. ......
3. }
这样的代码在C++中是合法的,但是在Java中规定最多只能继承一个父类,而可以实现多个接口。所以我们需要建立一个IAdaptee的接口,然后将我们的Adapter继承Target同时实现IAdaptee。
java 代码
1. // IAdaptee接口
2. public interface IAdaptee {
3.
4. String getData();
5. }
java 代码
1. // Adaptee 实现IAdaptee
2. public class Adaptee implements IAdaptee {
3. ......
4. }
java 代码
1. public class Adapter extends Target implements IAdaptee {
2.
3. private IAdaptee apt = null;
4.
5. public Adapter(IAdaptee apt) {
6. this.apt = apt;
7. }
8.
9. public String request() {
10. return apt.getData();
11. }
12.
13. public String getData() {
14. return apt.getData();
15. }
16. }
对于我们的显示器(Client)方面,Class Adapter跟Object Adapter一样,所以不需要进行修改。
对于Class Adapter,大家也看见了,在Adapter中因为是实现了IAdaptee接口,因此需要实现getData()的接口。一旦Target和IAdaptee拥有相同的方法时,会出现麻烦的。所以尽量优先使用Object Adapter的模式。
小结
作为总结,我觉得显卡本身的定义便很能表达Apater设计模式:“它是主机与显示器之间连接的“桥梁”,作用是控制电脑的图形输出,负责将CPU送来的的影象数据处理成显示器认识的格式,再送到显示器形成图象
转载自http://blog.csdn.net/mengxinzhangteng/archive/2008/02/25/2118645.aspx
Adapter模式:关键特征
意图:使控制范围之外的一个原有对象与某个接口匹配。
问题:系统的数据和行为都正确,但接口不符。通常用于必须从抽象类派生时。
解决方案:Adapter模式提供了具有所需接口的包装类。
参与者与协作者: Adapter改变了Adaptee的接口,使Adaptee与Adapter的基类Target匹配。这样Client就可以使用Adaptee了,好像它是Target类型。
效果:Adapter模式使原有对象能够适应新的结构,不受其接口的限制。
实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包含类的方法。
Adapter模式有两种类型:对象Adapter模式、类Adapter模式。
Facade模式简化了接口,而Adapter模式则将一个已有的接口转换成另一个接口。
场景
相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。
我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有 CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示,可是这两个部件却是不兼容的。于是我们需要一个中间设备,它能够将CPU“适配”于显示器,这便是我们的显卡——图形适配器(Adapter)。
java 代码
1. // 图形发送设备
2. public class Target {
3. /**
4. * 传送图形信号
5. */
6. public String request() {
7. return "Graphic sender";
8. }
9. }
java 代码
1. // 显示器
2. public class Client {
3.
4. public static void main(String[] args) {
5. Target target = new Targete();
6. System.out.println(target.request());
7. }
8. }
可是我们的CPU(Adaptee)只能输出0/1数据,他是个计算器,而不是图形发送设备(Target)。
java 代码
1. // CPU
2. public class Adaptee {
3. /**
4. * CPU输出的数据
5. */
6. public String getData() {
7. return "CPU data";
8. }
9. }
这个时候我们的显卡(Adapter)的作用便体现出来了,它负责对CPU进行适配,通过将CPU传过来的数据转换成图形信号,从而将CPU伪装成一个图形发送设备。
java 代码
1. // 显卡,即我们的适配器
2. public class Adapter extends Target {
3.
4. // 被代理的设备
5. private Adaptee apt = null;
6.
7. /**
8. * 装入被代理的设备
9. */
10. public Adapter(Adaptee apt) {
11. this.apt = apt;
12. }
13.
14. /**
15. * 被代理的设备传过来的数据转换成为图形输出
16. */
17. public String request() {
18. return apt.getData();
19. }
20. }
这样,我们的电脑的显示流程就变成CPU-显卡-显示器:
java 代码
1. public class Client {
2.
3. public static void main(String[] args) {
4. // CPU经过显卡的适配后“变”成了图形发送装置了
5. Target target = new Adapter(new Adaptee());
6. System.out.println(target.request());
7. }
8.
9. }
上面的这种依赖于对象组合的Adapter模式叫做对象适配器(Object Adapter)。它的特征是继承/实现某一方的类(Target),如这里的图形发送器,同时内部包含一个被适配的类(Adaptee),如这里的CPU。通过重写其父类的方法来进行适配。
另一种的Adapter实现
对于Adapter模式,还有另外一种实现方式,这种适配方式叫做类适配器(Class Adapter)。它与Object Adapter的不同之处在于它继承被适配的对象。
java 代码
1. public class Adapter extends Targer, Adaptee {
2. ......
3. }
这样的代码在C++中是合法的,但是在Java中规定最多只能继承一个父类,而可以实现多个接口。所以我们需要建立一个IAdaptee的接口,然后将我们的Adapter继承Target同时实现IAdaptee。
java 代码
1. // IAdaptee接口
2. public interface IAdaptee {
3.
4. String getData();
5. }
java 代码
1. // Adaptee 实现IAdaptee
2. public class Adaptee implements IAdaptee {
3. ......
4. }
java 代码
1. public class Adapter extends Target implements IAdaptee {
2.
3. private IAdaptee apt = null;
4.
5. public Adapter(IAdaptee apt) {
6. this.apt = apt;
7. }
8.
9. public String request() {
10. return apt.getData();
11. }
12.
13. public String getData() {
14. return apt.getData();
15. }
16. }
对于我们的显示器(Client)方面,Class Adapter跟Object Adapter一样,所以不需要进行修改。
对于Class Adapter,大家也看见了,在Adapter中因为是实现了IAdaptee接口,因此需要实现getData()的接口。一旦Target和IAdaptee拥有相同的方法时,会出现麻烦的。所以尽量优先使用Object Adapter的模式。
小结
作为总结,我觉得显卡本身的定义便很能表达Apater设计模式:“它是主机与显示器之间连接的“桥梁”,作用是控制电脑的图形输出,负责将CPU送来的的影象数据处理成显示器认识的格式,再送到显示器形成图象
转载自http://blog.csdn.net/mengxinzhangteng/archive/2008/02/25/2118645.aspx
发表评论
-
关于数组和List之间相互转换的方法
2011-04-14 21:04 13801.List转换成为数组。( ... -
java的几种对象(PO,VO,DAO,BO,POJO)解释
2011-03-24 10:13 1338java的几种对象(PO,VO,DAO,BO,POJO)解释 ... -
switch
2010-12-02 19:02 11431 public class Switch { 2 ... -
优化的冒泡排序
2010-09-25 14:18 1365public static void bubble_Sort( ... -
java变量命名规则
2010-08-13 23:15 23661. 大小写有别,例如 a 和 A是两个变量 2. 长度任意 ... -
String.getBytes()的问题
2010-08-13 22:46 1643转载 http://java.chinaitlab.c ... -
tomcat 修改端口
2010-08-09 22:41 2002Tomcat端口修改: 在Tomcat安装目录下的conf目 ... -
tomcat 中增加用户名和密码
2010-08-09 22:41 1911原来的tomcat-user.xml是 <?xml ... -
Eclipse is running in a JRE, but a JDK is required
2010-07-28 09:30 15211 安装了maven插件,使用的时候老是有这样的提示: 08- ... -
安装Eclipse的maven插件
2010-07-27 11:01 1817Installing m2eclipse Core To i ... -
Attach Library Sources and Javadocs
2010-07-26 13:41 1911Attach Library Sources and Java ... -
maven 安装jaxb插件
2010-07-18 15:10 65601. Put your schemas ( ... -
java接受控制台输入
2010-07-16 13:45 2709import java.io.*; public c ... -
将xsd文件转化为java类
2010-07-10 15:31 2510最近有一个需求是把xsd文件中定义的数据类型转化为java类 ... -
jconsole attache sun glassfish
2010-06-13 17:04 1348To Set Up JConsole Connectivity ... -
suse下lamp的安装
2010-05-31 16:45 1562首先卸载suse缺省安装的apache2 主要是在网上看到人家 ... -
java的property配置文件的用法
2010-05-30 15:04 1141在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我 ... -
让ubuntu下的eclipse支持GBK编码
2010-05-30 14:38 1512今天,把windows下的工程导入到了Linux下eclips ... -
java路径中/的问题
2010-05-18 17:23 1362windows支持两种文件分隔符“/”和“\” 且使用“/”时 ... -
java中serializable是可以继承的
2010-05-16 21:58 5505import java.io.FileInputStream; ...
相关推荐
Adapter模式是一种设计模式,主要目的是解决不同接口之间不兼容的问题,使得原本无法协同工作的类能够协同工作。在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类...
Adapter模式是软件设计模式中的一种结构型模式,它在C++中的应用广泛,主要用于解决不同接口之间不兼容的问题,使得原本由于接口不匹配而无法一起工作的类能够协同工作。Adapter模式通过创建一个适配器对象,将旧的...
Adapter模式是一种结构型设计模式,它允许不兼容的类或接口之间进行通信。在软件开发中,我们常常遇到这样的情况:需要使用一个已经存在的类,但是它的接口与我们的需求不匹配,这时候Adapter模式就能派上用场。它...
Adapter模式是一种软件设计模式,它允许不兼容的接口之间进行通信。在Java或者其他面向对象语言中,Adapter模式常被用来解决新旧系统对接、不同组件间的接口不匹配等问题。通过Adapter,我们可以让原本无法协作的...
例如,`InputStreamReader`是Adapter模式的一个实例,它将`InputStream`(处理字节流)适配为`Reader`(处理字符流),这样原本只能处理字节流的程序可以通过适配器使用字符流。同样,`OutputStreamWriter`则将`...
本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...
【Adapter模式】 Adapter模式是一种设计模式,它允许不同接口的类之间进行通信。在Android开发中,Adapter模式常用于将数据源(如数组、列表)与视图(如ListView、GridView)进行适配,使得数据能够正确地显示在UI...
介绍24设计模式中的Adapter模式,如果使用,实例讲解,等等
Adapter模式是一种设计模式,它允许不兼容的类之间进行通信,通过创建一个适配器类作为中介,将原有接口转换成目标接口。在本练习中,我们将会深入探讨Adapter模式的原理、应用场景以及如何实现。 Adapter模式主要...
Android流式布局,支持点击、单选、多选等,适合用于产品标签等,用法采用Adapter模式,和ListView、GridView用法一样!2016/6/26号新添加初始化标签功能,使用非常简单,只要你的Adapter实现OnInitSelectedPosition...
- **适配器(Adapter)**:适配器类实现了目标接口,内部持有一个原始接口的引用或实例,负责将原始接口的调用转换为目标接口的调用。 - **客户端(Client)**:客户端使用目标接口进行操作,对适配器和原始接口一无所知...
自己总结了一个在性能和结构上都很容易理解的Adapter模式。 Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口...
Adapter模式,也称为适配器模式,是一种设计模式,它允许不同接口的类协同工作。在Python中,适配器模式常用于解决新旧接口不兼容的问题,通过创建一个新的类(适配器)来包装原有类(适配者),使得原本不兼容的...
《C++设计模式:Adapter模式解析与应用》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它代表了最佳实践,并已被广泛接受。Adapter模式,也称为适配器模式,是设计模式中的一种,它允许两个不兼容...
前文说到一位用户拿着业界标准开关(一个标准的StandardSwitcher,它依赖IStandardSwitchable接口才能工作,然而目前我们的灯并不支持这个...我想来解释一下Adapter模式的要点是什么,对Adapter模式的延展,以及对Adap
在IT行业中,Adapter模式是一种设计模式,它在不同的接口之间起着桥梁的作用,允许不兼容的类协同工作。本主题将深入探讨Adapter的基础知识,帮助你理解其原理、应用场景及实现方式。 Adapter模式的主要作用是解决...