基本思想:
类A 想要使用 类B中的一些方法。那么就可以用多个继承或者实现。
关键步骤:
[I]Target target=new Adapter();
class Adapter extends Adaptee implements Target;
这里Adapter具备了Adaptee和Target两种类的属性
由于java是单根继承,所以只能用实现获取两个父类(接口)中的方法。
模式中的角色:
1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
2 需要适配的类(Adaptee):需要适配的类或适配者类。
3 适配器(Adapter):实现或者继承了上面两个接口或者类的类。这个类可以直接使用
参考代码:
// 已存在的、具有特殊功能、但不符合我们既有的标准接口的类
class Adaptee {
public void specificRequest() {
System.out.println("被适配类具有 特殊功能...");
}
}
// 目标接口,或称为标准接口,客户端所属于的类
interface Target {
public void request();
}
// 客户端类
class ConcreteTarget implements Target {
public void request() {
System.out.println("普通类 具有 普通功能...");
}
}
// 适配器类,继承了被适配类,同时实现标准接口
class Adapter extends Adaptee implements Target{
public void request() {
super.specificRequest();//继承来自特殊类的方法,并实现普通客户端可以接受的类,可以用多态来接收次适配器的对象
}
}
// 测试
public class Client {
public static void main(String[] args) {
// 使用普通功能类
Target concreteTarget = new ConcreteTarget();
concreteTarget.request();
// 使用特殊功能类,即适配类
Target adapter = new Adapter();
adapter.request();
}
}