- 浏览: 67967 次
- 性别:
- 来自: 上海
最新评论
-
java苹果+番茄:
已经修改,感谢大家提的意见;有一年多没进来了,很惭愧;以后一定 ...
java设计模式笔记链接地址汇总 -
youthon:
命令(Command)模式【行为模式第九篇】的链接应为http ...
java设计模式笔记链接地址汇总 -
youthon:
你给的链接只有你自己才能打开,你改改吧
java设计模式笔记链接地址汇总 -
shaozhi_jinni:
[b][/b][i][/i][u][/u]引用引用
[img ...
模板方法(Template Method)模式【行为模式第十篇】 -
Tank03:
慢慢的走~
android开发学习中(已经学会了几个小玩意),兴趣大增
适配器模式(Adapter Pattern)(另称-变压器模式):
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
1、(类适配器)模式所涉及的角色有:
1/目标(Target)角色:这就是所期待得到的接口。由于是类适配器模式,因此目标不可以是类。
2/源(Adaptee)角色:现有需要适配的接口。
3/适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,
而必须是具体类。
2、(对象适配器)
1):模式所涉及的角色有:
1/目标(Target)角色:这就是所期待的接口,目标可以是具体的或抽象的类
2/源(Adaptee)角色:现有需要适配的接口
3/适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口,这一角色必须是具体类
3、适配器模式的用意是将接口不同而功能相同或者相近的两个接口加以转换,这里面包括适配器角色补充了一个源角色没有的方法。
4、对象适配器模式的效果
1)一个适配器可以把多种不同的源适配到同一个目标,换言之,同一个适配器可以把源类和它的子类都适配到目标接口。
2)与类的适配器模式相比,要想置换源类的方法就不容易。如果一定要置换掉源类的一个或多个方法,就只好先做一个源
类的子类,将源类的方法置换掉,然后再把原来的子类当做真正的源进行适配。
3)虽然要想置换源类的方法不容易,但是要想增加一些新的方法则方便的很,而且新增加的方法可同时适用于所有的源。
5、在什么情况下使用适配器模式
1)系统需要使用现有的类,而此类的接口不符合系统的需要。
2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
这些源类不一定有很复杂的接口。
3)(对对象适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做
一个适配器,而这不太实际
6、本模式在实现的时候有以下这些值得注意的地方;
1) 目标接口可以省略。此时,目标接口和源接口实际上是相同的。由于源是一个接口,而适配器类是一个类(或抽象类)
因此这种做法看似平庸而并并平庸,它可以使客户端不必实现不需要的方法。
2)适配器类可以是抽象类,这可以在缺省适配情况下看到。
3)带参数的适配器模式。使用这种方法可以根据参数返还一个合适的实例给客户端
7、适配器模式与其他模式的关系
1)适配器模式与桥梁模式的关系
桥梁模式的用意是要把实现和它的接口分开,以便它们可以独立地变化。桥梁模式并不是用来把一个已有的对象接到不相
匹配的接口上的。当一个客户端只知道一个特定的接口,但是有必须与具有不同接口的类打交道时,就应当使用适配器模式。
2)适配器模式与装饰模式的关系
一个装饰类也是位于客户端和另外一个Compontent对象之间的,
在它接到客户端的调用后把调用传给一个或几个Component对象。
一个纯粹的装饰类必须与Compotent对象在接口上的完全相同,并增强后者的功能。
与适配器类不同的是,装饰类不能改变它所装饰的Compotent对象的接口。
3)适配器模式与缺省适配模式的关系
把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
1、(类适配器)模式所涉及的角色有:
1/目标(Target)角色:这就是所期待得到的接口。由于是类适配器模式,因此目标不可以是类。
2/源(Adaptee)角色:现有需要适配的接口。
3/适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,
而必须是具体类。
//目标角色类 public interface Target{ //源类有的方法 void sampleOperation1(); //源类没有的方法 void sampleOperation2(); } 源类(具体类) public class Adaptee{ //源类含有的方法sampleOperation1() public void sampleOperation1(){} } //适配器角色 public class Adapter extends Adaptee implements Target{ public void sampleOperation2(){} }
2、(对象适配器)
1):模式所涉及的角色有:
1/目标(Target)角色:这就是所期待的接口,目标可以是具体的或抽象的类
2/源(Adaptee)角色:现有需要适配的接口
3/适配器(Adapter)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口,这一角色必须是具体类
//Target类 public interface Target{ //源类有的方法 void sampleOperation1(); //源来没有的方法 void sampleOperation2(); } 源类(具体类) public class Adaptee{ //源类含有的方法sampleOperation1() public void sampleOperation1(){} } //适配器类 public class Adapter implements Target{ private Adaptee adaptee; public Adapter(Adaptee adaptee){ super(); this.adaptee = adaptee; } //源类有的方法,适配器直接委派就可以了 public void sampleOperation1(){ adaptee.sampleOperation(); } //源类没有,需要补充 public void sampleOperation2(){ //............ } }
3、适配器模式的用意是将接口不同而功能相同或者相近的两个接口加以转换,这里面包括适配器角色补充了一个源角色没有的方法。
4、对象适配器模式的效果
1)一个适配器可以把多种不同的源适配到同一个目标,换言之,同一个适配器可以把源类和它的子类都适配到目标接口。
2)与类的适配器模式相比,要想置换源类的方法就不容易。如果一定要置换掉源类的一个或多个方法,就只好先做一个源
类的子类,将源类的方法置换掉,然后再把原来的子类当做真正的源进行适配。
3)虽然要想置换源类的方法不容易,但是要想增加一些新的方法则方便的很,而且新增加的方法可同时适用于所有的源。
5、在什么情况下使用适配器模式
1)系统需要使用现有的类,而此类的接口不符合系统的需要。
2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
这些源类不一定有很复杂的接口。
3)(对对象适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做
一个适配器,而这不太实际
//Itermeration类 import java.util.Iterator; import java.util.*; import java.util.Enumeration; public class Itermeration implements Enumeration{ private Iterator it; public Itermeration(Iterator it){ this.it = it; //是否存在下一个元素 public boolean hasMoreElements(){ return it.hasNext(); } //返还下一个元素 public Object nextElement() throws NoSuchElementException{ return it.next(); } } } //Enuterator类 import java.util.Iterator; import java.util.*; import java.util.Enumeration; public class Enuterator implements Iterator{ Enumeration enum; public Enuterator(Enumeration enum){ this.enum = enum; } //是否存在下一个元素 public boolean hasNext(){ return enum.hasMoreElements(); } //返还下一个元素 public Object next() throws NoSuchElementsException{ return enum.nextElement(); } //删除当前的元素(不支持) public void remove(){ throw new UnsupportedOperationException(); } } -------------------------------------------------- //立方体类 public class Cube{ private double width; public Cube(double width){ this.width = width; } //计算体积 public double calculateVolume(){ return width*width*width; } //计算面积 public double calculateFaceArea(){ return width*width; } //长度的取值方法 public double getWidth(){ return this.width; } //长度的赋值方法 public void setWidth(double width){ this.width = width; } } //目标接口角色 public interface BallIF{ //计算面积 double calculateVolume(); //半径的取值方法 double getRadius(); //半径的赋值方法 void setRadius(double radius); } //适配器类角色 public class MagicFinger implements BallIF{ private double redius = 0; private static final double PI = 3.14D; private Cube adaptee; public MagicFinger(Cube adaptee){ super(); this.adaptee = adaptee; radius = adpatee.getWidth(); } //计算面积 public double calculateArea(){ return PI*4.0D*(radius); } public double calculateVolume(){ return PI*(4.0D/3.0D)*(radius*radius*radius); } //半径取值方法 public double getRadius(){ return radius; } public void setRadius(double radius){ this.radius = radius; } }
6、本模式在实现的时候有以下这些值得注意的地方;
1) 目标接口可以省略。此时,目标接口和源接口实际上是相同的。由于源是一个接口,而适配器类是一个类(或抽象类)
因此这种做法看似平庸而并并平庸,它可以使客户端不必实现不需要的方法。
2)适配器类可以是抽象类,这可以在缺省适配情况下看到。
3)带参数的适配器模式。使用这种方法可以根据参数返还一个合适的实例给客户端
7、适配器模式与其他模式的关系
1)适配器模式与桥梁模式的关系
桥梁模式的用意是要把实现和它的接口分开,以便它们可以独立地变化。桥梁模式并不是用来把一个已有的对象接到不相
匹配的接口上的。当一个客户端只知道一个特定的接口,但是有必须与具有不同接口的类打交道时,就应当使用适配器模式。
2)适配器模式与装饰模式的关系
一个装饰类也是位于客户端和另外一个Compontent对象之间的,
在它接到客户端的调用后把调用传给一个或几个Component对象。
一个纯粹的装饰类必须与Compotent对象在接口上的完全相同,并增强后者的功能。
与适配器类不同的是,装饰类不能改变它所装饰的Compotent对象的接口。
3)适配器模式与缺省适配模式的关系
发表评论
-
java设计模式笔记链接地址汇总
2009-10-24 14:46 2294各位,这些笔记已经生成了pdf,如果有兴趣的可以在本文末尾下载 ... -
MVC模式【行为模式第十三篇】
2009-10-23 23:36 1517MVC模式:就是模型-视 ... -
状态(State Pattern)模式【行为模式第十二篇】
2009-10-23 23:35 1371状态(State Pattern)模式:又称为状态对象模式,状 ... -
责任链(Chain of Responsibility)模式【行为模式第十一篇】
2009-10-23 23:33 1255责任链(Chain of Responsibility)模式 ... -
模板方法(Template Method)模式【行为模式第十篇】
2009-10-23 23:32 1229模板方法(Template Method)模式 模板方法模式 ... -
命令(Command)模式【行为模式第九篇】
2009-10-23 23:31 1416命令(Command)模式: ... -
解释器(Interpreter)模式【行为模式第八篇】
2009-10-23 23:29 1111解释器(Interpreter)模 ... -
观察者(Observer)模式【行为模式第七篇】
2009-10-23 23:28 1280观察者(Observer)模式 ... -
访问者(Visitor)模式【行为模式第六篇】
2009-10-23 23:26 1134访问者(Visitor)模式: 访问者模式是对象的行为模式。 ... -
迭代子(Iterator)模式【行为模式第五篇】
2009-10-23 23:25 1536迭代子(Iterator)模式: 迭代子模式又叫游标(Cur ... -
调停者(Mediator)模式 【行为模式第四篇】
2009-10-23 23:23 2676调停者(Mediator)模式 调停者模式是对象的行为模式。 ... -
策略(Strategy)模式 【行为模式第三篇】
2009-10-23 23:22 1541策略(Strategy)模式 策略模式属于对象的行为模式。其 ... -
不变(Immutable)模式【行为模式第二篇】
2009-10-23 23:21 1704不变(Immutable)模式 一个对象的状态在对象被创建之 ... -
备忘录(Memento Pattern)模式 【行为模式第一篇】
2009-10-23 23:19 1994备忘录(Memento Pattern)模式 备忘录模式又叫 ... -
适配器模式举例【结构模式第八篇】
2009-10-23 23:17 1056XMLProperties与适配器模式举例: //---- ... -
桥梁(Bridge)模式【结构模式第五篇】
2009-10-23 23:09 1368桥梁(Bridge)模式: 一、桥梁模式的用意 桥梁模式 ... -
门面(Facade)模式【结构模式第四篇】
2009-10-23 23:08 1240门面(Facade)模式: 是对象的结构模式。外部与一个子系 ... -
亨元(Flyweight Pattern)模式【结构模式第三篇】
2009-10-23 23:07 1189亨元(Flyweight Pattern) ... -
合成(Composite)模型模式【结构模式第二篇】
2009-10-23 23:04 1400合成(Composite)模型模式: 属于对象的结构模式,有 ... -
代理(Proxy)模式 【结构模式第一篇】
2009-10-23 23:02 1408代理(Proxy)模式 是对 ...
相关推荐
文章《适配器模式案例代码》提供了具体的实现示例,链接指向了CSDN博主hailushijie的一篇文章,虽然具体内容无法在此直接展示,但我们可以深入探讨适配器模式的核心概念和应用。 适配器模式主要有两种形式:类...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式被广泛应用于各种场景,如文件描述符的处理和...无论是JDK的标准库还是第三方框架,适配器模式都是不可或缺的设计原则之一。
适配器模式(Adapter Pattern)是一种常用的软件设计模式,它属于结构型模式的一种。该模式的主要目的是解决不同接口之间的兼容性问题,使原本由于接口不一致而不能一起工作的类能够协同工作。适配器模式的核心思想...
在软件工程中,当系统中存在一个已经存在的组件或者第三方库,但其接口与我们的需求不匹配时,适配器模式就显得尤为有用。适配器模式通过创建一个适配器对象,将原有接口转换为所需的接口,从而使原有组件可以被新的...
结构型模式描述如何组合类和对象以获得更大的结构,如适配器模式、代理模式等。适配器模式允许不兼容的接口之间能够合作无间;代理模式则为另一个对象提供一种代理以控制对这个对象的访问,适用于延迟初始化、访问...
今天我们将深入探讨适配器模式的原理、结构以及在Java中的应用。 适配器模式主要有两种形式:类适配器模式和对象适配器模式。类适配器模式是通过继承目标类(即希望适配的接口)并实现适配接口来完成适配;而对象...
#### 六、适配器模式的优点 1. **更好的复用性**:可以通过适配器模式让现有类的功能更好地复用。 2. **更好的扩展性**:在实现适配器功能时,可以调用自己的代码来扩展系统的功能。 #### 七、适配器模式的缺点 1...
第6章 建造者模式(Builder) 6.1 模式解说 6.2 结构和用法 6.2.1 模式结构 6.2.2 代码模板 6.3 范例与实践 6.3.1 一个数据集对象产品的建造者模式 6.3.2 范例小结 第7章 单例模式(Singleton) 7.1 模式...
第6章 建造者模式(Builder) 6.1 模式解说 6.2 结构和用法 6.2.1 模式结构 6.2.2 代码模板 6.3 范例与实践 6.3.1 一个数据集对象产品的建造者模式 6.3.2 范例小结 第7章 单例模式(Singleton) ...
第6章 开闭原则 6.1 开闭原则的定义 6.2 开闭原则的庐山真面目 6.3 为什么要采用开闭原则 6.4 如何使用开闭原则 6.5 最佳实践 第二部分 我惹了谁——真刀实枪篇 第7章 单例模式 7.1 我是皇帝我独苗 7.2 单例模式的...
3. **适配器模式(Adapter)**:适配器模式将两个不兼容的接口转换为可以一起工作的形式。通过创建一个适配器类,可以将旧的或第三方库的接口转换为符合新系统需求的接口。 4. **桥接模式(Bridge)**:桥接模式将...
在本文档中的第六个试验中,我们使用了访问者模式来实现计算机部件销售软件。在这个例子中,我们使用了访问者模式来将销售算法与计算机部件对象分离。 七、策略模式 策略模式是一种行为型模式,它可以将算法与对象...
4.2.1适配器模式实例之算法适配 4.2.2桥接模式实例之跨平台视频播放器 4.2.3组合模式实例之杀毒软件 4.2.4装饰模式实例之界面显示构件库 4.2.5外观模式实例之文件加密 4.2.6享元模式实例之围棋棋子 4.2.7代理...
- **定义**:适配器模式是一种结构型设计模式,它创建了一个转换接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式主要分为类适配器和对象适配器两种形式。 - **使用场景**:当需要将已有...
7. **适配器模式 (16第十六讲:适配器模式.7z)** 适配器模式是一种结构型设计模式,它能使两个不兼容的接口协同工作。在Java中,适配器模式常用于将旧的API与新的API连接,Spring的JDBC抽象层就是适配器模式的一个...
第1节:适配器模式 第2节:桥接模式 第3节:组合模式 第 4 节:装饰器模式 第5节:外观模式 第6节:享元模式 第7节:代理模式 行为模式(10节) 第1节:责任链模式 第 2 节:命令模式 第3节:迭代器模式 第 4节:中介者...
第6章 工厂方法模式(Factory Method) 第7章 抽象工厂模式(Abstract Factory) 第8章 生成器模式(Builder) 第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 ...
适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式...