java中怎么去理解适配器模式?可否举一个示例。谢谢!

 我来答
mikemelon2012
2012-08-31 · TA获得超过3633个赞
知道大有可为答主
回答量:938
采纳率:87%
帮助的人:386万
展开全部
”适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作“。

当然上面那个是教科书式的定义啦。你可以从下面这个例子这样理解,比较直观:
用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题。

Java里面无非就是继承类、实现接口这些啦,就是通过它们来实现上面的机制。

两相电源插座是一个接口TwoPhase,里面有一个通电的方法plug2(),这在“适配器”模式中叫目标接口,就是说目标是让其他类“能插上两相的接口”,
三相电源插座也是一个接口ThreePhase,里面也有一个通电的方法plug3(),它有一个实现类,就是笔记本电脑类,叫NoteBook。

如何实现适配呢?有三种方法(其实是对应适配器模式的几种情况):
1,作一个类,叫三相到两相的转换器(适配器)类是ThreeGoTwoAdapter,同时实现两相电源插座接口TwoPhase和三相电源插座接口ThreePhase(其实就是提供plug2和plug3两个方法),然后就用NoteBook继承这个类就行了:
class NoteBook extends ThreeGoTwoAdapter
这样笔记本电脑也有plug2()方法了,表示能插上两相插头了,当然它用的是ThreeGoTwoAdapter的缺省实现,这种也叫“缺省适配器”模式。

2,让NoteBook直接实现三相电源插座接口ThreePhase,这就强制NoteBook提供plug2()方法,表示能插上两相插头,这种叫“类适配器”模式。

3,作一个三相电源笔记本类,ThreeAdapterNoteBook,让他实现ThreeAdaper接口,并持有NoteBook类对象的一个引用(术语叫做“委派”),让这个类对象构造时就把这个引用也传进去,也就是
class ThreeAdapterNoteBook implements ThreeAdapter{

private NoteBook notebook;
public ThreeAdapterNoteBook(NoteBook nb){
this.notebook=nb;
}
public void plug2() { this.nb.plug2(); }
public void plug3() { ....}
}
这种也叫“对象适配器”模式。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式