适配器(Adapter)模式
把一个类的接口变换成客户端所希望的另一种接口,从而使原本因接口
原因不匹配而无法工作的两个类能够一起工作。
适配器(Adapter)模式的构成
目标抽象角色(Target):定义客户要用的特定领域的接口
适配器(Adapter):调用另一个接口,作为一个转换器
适配器(Adaptee):定义一个接口,Adapter需要接入
客户端(Client):协同对象符合Adapter适配器
适配器的分类
有三种类型的适配器模式
public interface Target {
public void method1();
}
public class Adaptee {
public void method2(){
System.out.println("目标方法");
}
}
类适配器(采取继承的方式)
public class Adapter extends Adaptee implements Target {
@Override
public void method1() {
this.method2();
}
}
public class Client {
public static void main(String[] args) {
Target target=new Adapter();
target.method1();
}
}
对象适配器(采取对象组合的方式)(推荐)
public class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee=adaptee;
}
@Override
public void method1() {
adaptee.method2();
}
}
public class Client {
public static void main(String[] args) {
Target target=new Adapter(new Adaptee());
target.method1();
}
}
缺省的适配器模式(AWT、Swing事件模型所采用的模式)
public interface AbstractService {
public void service1();
public void service2();
public void service3();
}
public class ServiceAdapter implements AbstractService{
@Override
public void service1() {
}
@Override
public void service2() {
}
@Override
public void service3() {
}
}
package com.shengsiyuan.pattern.defaultadapter;
public class ConcreteService extends ServiceAdapter {
@Override
public void service1(){
System.out.println("执行业务方法");
}
}