适配器模式
适配器,很简单,很常用。
适用场景:
举个例子就明白了:你有个电器,是双向插头的,但是,你只有三项插座,怎么办?你可以买一个带有双向插座的插排,当然插排的插头是三项的。这个插排,就充当着适配器。
在我们软件设计过程中,场景就是这样的:
1.有时,工具箱或类库不能够被使用的原因是因为其接口与应用程序所需要的接口不兼容。
2.我们不能更改库接口,因为我们可能没有它的源代码。
3.即使我们拥有源代码,可能我们也不应为每个与领域相关的应用程序而更改库。
适配器的大致可以分为三种:
类适配器(使用继承方式实现):
解释:Client只认识Target接口,并不认识Adaptee,而Adapter就充当了适配器,让Client在只认识Target的情况下,使用了Adaptee。
对象适配器(使用组合方式实现):
对象适配器uml图
类适配器和对象适配器的区别就是他们的实现方式,前者使用继承的方式,后者使用组合的方式。尤其对于java来说,对象适配器更加灵活。
缺省适配器:
我们知道MouseListener接口有五个方法,而我们通常指需要实现其中一个或两个,其他的都为空方法。在代码里,很不美观。
这时候,可以使用MouserAdapter。这个类实现了MouseListener,但其实什么都没有做。我们经常new一个MouserAdapter的匿名类,其实就是重载了我们需要的事件函数,不需要的默认(也就是缺省)为什么都不做。