适配器理解起来有点问题,网上大多都是插座的例子也是出自设计模式一书。分为类和对象适配器。过程是:已有的类---------》适配器-----------》需要的类(接口)。
功能用到的还是原来的类的函数,只是在外面包装了一下,这有点像代理模式。
把原有的类作为参数传给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中工作。
也就是说:实现的功能还是原来的类的功能。只是实现了代码的复用。
理解不到的地方请指正