适配器理解起来有点问题,网上大多都是插座的例子也是出自设计模式一书。分为类和对象适配器。过程是:已有的类---------》适配器-----------》需要的类(接口)。
功能用到的还是原来的类的函数,只是在外面包装了一下,这有点像代理模式。
把原有的类作为参数传给adapter(适配器),适配器同时又继承了已有的接口,就是用适配器去把已有的类包装成需要的类。
有几点:
1.为什么去包装?
2.怎么包装。(继承和组合)
我的理解:::他包装后更多的不是关注实现的功能,比如print("a")还是print("b").而是代码的复用。需要的接口(target)只有固定的函数。比如print,具体里面的实现是什么,他不关心。你把现有的A类或B类或。。。,包装后,都只有一个print方法,这在工程中就不用改变了,实现了代码的复用。
已有的A类:
class A { public void printA() { System.out.println("在A中工作"); }}
已有的B类:
class B { public void printB() { System.out.println("在B中工作"); }}需要的接口:
public interface Target { void print();}适配adapter
class Adapter implements Target { A a; Adapter(A a) { this.a = a; } @Override public void print() { a.printA(); }}注意上面适配器可以包装B,把A换成B即可。
测试:
class Test { public static void main(String[] args) { A a = new A(); Target target = new Adapter(a); target.print(); }}结果:在A中工作。
换成B后:
结果:在B中工作。
也就是说:实现的功能还是原来的类的功能。只是实现了代码的复用。
理解不到的地方请指正