设计模式——适配器模式

一、什么是适配器

适配器是将一种接口改造成另外一种接口的一个包装类;

适配器就是将现有类按照目标标准接口的形式表现出来

思想:将已有的旧的事物用新的标准来表现出来

二、说明

两种实现方式:继承、组合

使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口;

优点:符合开闭原则;适配者类和目标类解耦;代码复用;

三、角色

目标接口

适配器类

适配者类

使用者

四、Java实例

简介:现有一个USB接口和一个PSP接口实现类,功能都是进行充电,该例子的目的就是对PSP接口实现类进行包装,使之能用USB接口充电;

目标接口(标准接口),使用USB接口充电

package designpatterns.adapter;

public interface IUSB {
    public void charge();
}

被适配类,使用psp类进行充电

package designpatterns.adapter;

public class PSP {
    public void pspCharge(){
        System.out.println("使用PSP充电");
    }
}

适配器类(继承方式实现)

package designpatterns.adapter;

public class Adapter extends PSP implements IUSB{
    @Override
    public void charge() {
        super.pspCharge();
    }
}

适配器类(组合方式),组合PSP对象,并实现IUSB接口

package designpatterns.adapter;

public class AdapterCombination implements IUSB{
    private PSP psp;

    public AdapterCombination(PSP psp){
        this.psp = psp;
    }

    @Override
    public void charge() {
        psp.pspCharge();
    }
}

主类测试

package designpatterns.adapter;

public class AAAdaTest {
    public static void main(String[] args) {
        //继承方式 适配器
        IUSB iusb = new Adapter();
        iusb.charge();

        //组合方式 适配器
        IUSB iusb1 = new AdapterCombination(new PSP());
        iusb1.charge();
    }
}

打印结果:

使用PSP充电
使用PSP充电