【设计模式】适配器模式

使用频率:★★★★☆

一、什么是适配器

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

二、补充说明

有两种实现方式,一种是通过继承,另外一种通过组合;

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

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

三、角色

目标接口

适配器类

适配者类

使用者

四、例子,JAVA实现

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

目标接口,使用USB接口充电

package com.pichen.dp.structuralpattern;

public interface IUSB {
	
	public void charge();
	
}

 一个USB接口的实现类(该类不属于适配器模式中的角色,只是一个对比)

复制代码
package com.pichen.dp.structuralpattern;

public class HPUSB implements IUSB{

    @Override
    public void charge() {
        System.out.println("使用惠普USB接口充电~");
        
    }

}
复制代码

适配者类,使用PSP充电

复制代码
package com.pichen.dp.structuralpattern;
public class PSP {

    public void pspCharge(){
        
        System.out.println("使用PSP接口充电~");
        
    }
}
复制代码

适配器类(继承方式),继承PSP类,并实现IUSB接口

复制代码
package com.pichen.dp.structuralpattern;
public class PSPAdapter extends PSP implements IUSB{

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

}
复制代码

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

复制代码
package com.pichen.dp.structuralpattern;
public class PSPAdapter2 implements IUSB{

    private PSP psp;
    
    public PSPAdapter2(PSP psp) {
        this.psp = psp;
    }
    @Override
    public void charge() {
        psp.pspCharge();
    }

    
}
复制代码

使用者Main,测试结果

复制代码
package com.pichen.dp.structuralpattern;

public class Main {
    public static void main(String[] args) {
        IUSB usb = new HPUSB();
        usb.charge();
        
        IUSB usb_psp = new PSPAdapter();//继承
        usb_psp.charge();
        
        IUSB usb_psp2 = new PSPAdapter2(new PSP());//组合
        usb_psp2.charge();
    }
}
复制代码

打印结果:

使用惠普USB接口充电~
使用PSP接口充电~
使用PSP接口充电~

 

分类: 设计模式
0
0
« 上一篇: 【设计模式】原型模式
» 下一篇: 【设计模式】代理模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值