适配器把一个类的接口,强制变成另外一个类的接口实现。
个人建议,万不得已不要用适配器。但是,你一定要知道有这么个东西。
如果你的项目刚刚起步,就有人用了适配器,那基本上就是滥用。
适配器一般是项目庞大,比如接口已经对外提供出去,不好快速修改了,但由于特殊业务需要其他接口的实现,不得已才用的。
所以,适配器模式,能少用则少用,能不用则不用。
具体实现
假设有个类A,类中有方法aMethod;
再有个类B,类中有方法bMethod;
正常情况下,A类的引用调用方法aMethod,B类的引用调用方法bMethod,如下。
A a = new A();
a.aMethod();
B b = new B();
b.bMethod();
现在需求如下,在不改变类A和类B的前提下,想用类A的引用,调用方法aMethod,但最终方法aMethod中却是方法bMethod的实现。
这时就要用到适配器模式。
我们新建一个类C,继承类A,然后把类B作为类C的成员变量注入进来,然后重写方法aMethod,在aMethod方法中,使用类B的引用,调用类B的bMethod方法,即可。
类C就是AB的适配器,准确的说,是C让A适配了B。
class C extends A{@Autowiredprivate B b;@Overrideprivate void aMethod(){b.bMethod();}
}
这样一来,就可以让类A的引用调用方法aMethod,结果却是调用了bMethod方法。
A a = new C();
a.aMethod();
注意
如果一个项目过多的使用适配器模式,那将会使项目的可读性大大降低,甚至会误导人。
这种情况,就要考虑重构项目了。
所以说,适配器就是为了解决短时间的问题,不得已才这么做的,他破坏了类与类之间清晰的界限,有种移花接木的感觉,不能常用。