论坛首页 Java企业应用论坛

面试总结---适配器模式

浏览 24136 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-11-29  
bitray 写道
yangguo 写道
wl95421 写道
其实MouseAdapter这个名字真是误导了,感觉叫AbstractMouseXXX可能更合适一些。
如果想了解Adapter这个模式,建议去看一下Eclipse的核心代码。
在此之前,我一直也无法正确理解这个模式。
大部分情况下,用到Adapter模式不会太多,主要处理一些未知情况,以及用来扩展,普通的项目中不太会用到,核心或者平台类的代码可能会用到。



正解。

大家仅仅是想学习一下,去看eclipse的核心代码这个范围是不是太大了。没有范文或者凡例吗?


范围的确很大,没有开发过Eclipse插件的人,很难深入理解这部分内容。
如果只是想了解一下,可以看这几个接口。
org.eclipse.core.runtime.IAdaptable
org.eclipse.core.runtime.IAdapterFactory
org.eclipse.core.runtime.IAdapterManager

另外说一句,模式这种东西,只要用对了,不必纠结名字,叫缺省实现也好,抽象类也好,叫缺省适配器也好,自己想清楚,比它叫什么名字重要。

0 请登录后投票
   发表时间:2011-11-29   最后修改:2011-11-29
楼主说的应该是    缺省适配器模式

这个模式是接口和抽象类各自优点的充分利用哈。

应用场景:

一个接口有N个现实类,现在需要在这个接口中新增一个方法,这样的话N个实现类必须分别实现这个方法。“牵一发动全身”。

但是如果前期考虑到可扩展性,该N个实现类都继承了一个抽象类,现在就只需要在这个抽象类中实现接口新增的方法即可,不必N个实现类分别实现该方法。


这个和适配器模式有很大的区别。

适配器模式:

DAO层有DO对象,BIZ层有VO对象,我认为BIZ调DAO层时,这个DO-VO之间的相互转换就是适配器模式的一个应用。
0 请登录后投票
   发表时间:2011-11-29  
zhanghh321 写道
楼主 我查了adapter模式,但是貌似只有类适配,对象适配模式,没有你说的缺省适配器模式。 但是我查缺省适配器模式的时候也能查到,因此我觉得缺省适配器模式不属于我们常说的设计模式吧。


然后我根据具体内容发现缺省适配器的作用跟adapter模式还是有很大差别的,其作用不可同日而语。。



Java与模式
作者:阎宏  出版社:电子工业出版社
第22章 适配器(Adapter)模式

http://baike.baidu.com/view/3371585.htm
关于JAVA适配器的解释下有解释。即然用了java语言开发,就应该尊重JDK的思想。如果有问题,只能说我追随了有问题的一部分人。

java.awt.event.FocusAdapter
An abstract adapter class for receiving keyboard focus events
这句话里的adapter做合解释。我英语不太好。
0 请登录后投票
   发表时间:2011-11-29   最后修改:2011-11-29
对于楼主,在这叫曲,我只能认为没有理解考官的心态。 考官,当然是想查验,面试者是否熟悉设计模式,是否理解适配器模式。至于,MouseAdapter这类是否叫适配器无关。

另外,说到适配器模式,我真的认为有必要对适配器的结构与应用背景之后的东东,进行深入的观察 总结,体会出最本质的东东。

许多教程或所谓的考家,是不会说的,要么怕说得不得体,要么怕说错。

我不是专家,也不是成功者,也就无所谓了。大谈自已的看法。

适配器模式,在实现其应用时,最重要的一个技术手段,叫对象注入,或实例注入。何谓对象注入?就是把一个类的的实例A传入另一个类的实例B当中,以供实例B对实例A的功能进行调用。

这样做有什么好处?这样做,可以编织一个框架。在这个框架中,我规定主要的结构,大体的功能,至于具体的功能是这么样,随着用户的需要,在以后的使用中,给该框架,注入一个对象,通过调该对象的函数方法,实现具体的需求。

所谓适配,就是指原本两个不大调的东西,通过一手段,把他们结合在一起使用。

设计模式中的适配器,本质就是把一个不大调的类(要改变或利用,或扩展该类的功能,但是由于该类已经是封装好了的,无法对该类的源代码进行处理),放在新类中,定义其实例变量,在新类使用前,需把这个不大调类的实例,传入进去。

如果理解到这里,什么组合模式、职责链模式什么的都迎刃而解,他们也是使用了该技术。传入了一大批对象的实例,然后按某种规律调用他们。

如果理解这个本质,在工作中,很自然的就会使用模式,创造模式了。当一个类无法改变时,写一个新类,把旧类的实例注入给新类就可以了。当要写一个框架时,除了使用接口外,可以写一大堆仅做一点事的类,而这些类最终功能确定与最终要做的事,就让注入到他们中的其他类型的实例去完成吧!
0 请登录后投票
   发表时间:2011-11-29  
不管怎么样,计算机在发展,模式就不能在出新,或产生出来新的实例或子节点。
楼上说的很在理,我还真是叫曲。因为我发现了好多公司的面试官水平真的不怎么地。我也在单位面试过应聘者。还是捡自己会的问比较好。
面试的是java方向的,在java这个层次上,多出一个缺省适配器 又有何不妥呢。jvm不就是挺好的想法吗?sun的做法,至少我能接受。
0 请登录后投票
   发表时间:2011-11-29  

ITEYE,这个SB隐贴机制,虽然简化了管理人员的工作,也阻碍了技术员,对技术深入的讨论。

牛人不愿发贴,新手发贴讨论,又要借不要误导其他新手,而隐藏之。

SB的ITEYE,到现在就只剩下新闻了,还有仅有的过时的所谓的精华!


论坛本是技术探讨的地方,结果被搞成只允许精华存在的东东,还有大量隐藏的贴子了。
0 请登录后投票
   发表时间:2011-11-29  
yunhaifeiwu 写道

ITEYE,这个SB隐贴机制,虽然简化了管理人员的工作,也阻碍了技术员,对技术深入的讨论。

牛人不愿发贴,新手发贴讨论,又要借不要误导其他新手,而隐藏之。

SB的ITEYE,到现在就只剩下新闻了,还有仅有的过时的所谓的精华!


论坛本是技术探讨的地方,结果被搞成只允许精华存在的东东,还有大量隐藏的贴子了。



兄弟你怎么的了?牛人是忙的啊!呵呵
不过遇到问题,或想法不一要是要交流的。像Java与模式 作者:阎宏  这本书,我朋友就建议不要看,他介绍我看设计模式深入浅出和大话设计模式。但我看了。感觉也不是不能接受。至少sun的源码里有这样的示例。当然可能是个新新人类似的东西。发现不一样的地方,应该探讨,不应该直接否定。说他就不是适配器模式(java)
0 请登录后投票
   发表时间:2011-11-29  
why213344 写道
yunhaifeiwu 写道

ITEYE,这个SB隐贴机制,虽然简化了管理人员的工作,也阻碍了技术员,对技术深入的讨论。

牛人不愿发贴,新手发贴讨论,又要借不要误导其他新手,而隐藏之。

SB的ITEYE,到现在就只剩下新闻了,还有仅有的过时的所谓的精华!


论坛本是技术探讨的地方,结果被搞成只允许精华存在的东东,还有大量隐藏的贴子了。



兄弟你怎么的了?牛人是忙的啊!呵呵
不过遇到问题,或想法不一要是要交流的。像Java与模式 作者:阎宏  这本书,我朋友就建议不要看,他介绍我看设计模式深入浅出和大话设计模式。但我看了。感觉也不是不能接受。至少sun的源码里有这样的示例。当然可能是个新新人类似的东西。发现不一样的地方,应该探讨,不应该直接否定。说他就不是适配器模式(java)



没怎么,你看你的贴已经被投隐藏了,可以预计,一段时间后,你的贴子就成了垃圾贴 而消失了。

设计模式,要看就看,李建忠所讲的。至少我是看了他的,再思考,观察,总结,收获很大。
0 请登录后投票
   发表时间:2011-11-29  
lanzhongzzl 写道
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four
以上是四人帮的原话。

其实适配器模式在项目中经常用到,例如客户在接口中定义了他期望的方法,我们就可以写一个类实现客户的接口,并且包含我们的类的引用来实现。这就是一个简单的适配器模式应用。


将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

这是二句话,分开来看,一句一句分析也许会好一些!特别是第一句。应该说更宽更广。后面就具体一些了。发挥我们的想像吧。
0 请登录后投票
   发表时间:2011-11-29  
yunhaifeiwu 写道
why213344 写道
yunhaifeiwu 写道

ITEYE,这个SB隐贴机制,虽然简化了管理人员的工作,也阻碍了技术员,对技术深入的讨论。

牛人不愿发贴,新手发贴讨论,又要借不要误导其他新手,而隐藏之。

SB的ITEYE,到现在就只剩下新闻了,还有仅有的过时的所谓的精华!


论坛本是技术探讨的地方,结果被搞成只允许精华存在的东东,还有大量隐藏的贴子了。



兄弟你怎么的了?牛人是忙的啊!呵呵
不过遇到问题,或想法不一要是要交流的。像Java与模式 作者:阎宏  这本书,我朋友就建议不要看,他介绍我看设计模式深入浅出和大话设计模式。但我看了。感觉也不是不能接受。至少sun的源码里有这样的示例。当然可能是个新新人类似的东西。发现不一样的地方,应该探讨,不应该直接否定。说他就不是适配器模式(java)



没怎么,你看你的贴已经被投隐藏了,可以预计,一段时间后,你的贴子就成了垃圾贴 而消失了。

设计模式,要看就看,李建忠所讲的。至少我是看了他的,再思考,观察,总结,收获很大。



这个很正常啊,你不能让所有人都认可你。只要大家都有自己的想法就行了,不过在单位可不要这样。说了算的还是上面的人。我们的意见保留。。有个比较牛叉的人不是说过:“懂的要执行,不懂的也要执行,在执行的过程中,慢慢懂!”
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics