1适配器模式定义:将一个类的接口转化为客户希望的另一个类的接口,使得原本由于接口不兼容的2个类可以一同工作。
Client:客户端,调用自己领域接口Target。
Target:定义客户端需要的跟特定领域有关的接口。
Adaptee:已经实现的,满足客服端要求功能的类,但是由于接口与客服端特定领域接口不兼容而无法工作,需要适配。
Adapter:适配器,将Adaptee适配成Client需要的Target。
实现:Target:
interface Target {
public void request();
}
Adaptee:
public class Adaptee {
public void specialRequest(){
System.out.println("special method~");
}
}
Adapter:
public class Adapter implements Target{
Adaptee adaptee;
Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void request(){
adaptee.specialRequest();
}
}
Client:
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Target target = new Adapter(new Adaptee());
target.request();
}
}
2.模式功能:主要功能是 模式转换,目的是复用已用的功能,而不是实现新的接口。同时适配器里也能够实现功能,这种适配器被称为 智能适配器。
3.适配器的实现:1.常规实现:如例子,适配器实现Target接口,然后持有Adaptee对象。
2.智能适配器:实现一些在Target中定义的功能,而Apaptee并没有的功能。
3.适配多个Adaptee:完成Target的功能,需要适配多个Adaptee。
4.双向适配器:在Adapter中能够将Target适配成Adaptee,同时能够将Adaptee适配成Target。
4.适配器分类:1.对象适配器:依赖对象的组合
2.类适配器:java不支持多重继承,但是可以:先实现Target接口,再继承Adaptee方法。
5.优点:更好的复用性和可扩展性。
6.缺点:过多使用,会让系统非常凌乱,不容易整体把控,如非必要,优先对系统进行重构。
7.本质:转换匹配,复用功能。