适配器模式(Adapter Pattern)

定义

将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。
适配器模式通用类图

代码实现

目标角色:

public interface Target {

    //目标角色生产上已经稳定使用的接口
    void request();
}

目标角色实现类:

public class ConcreteTarget implements Target {

    @Override
    public void request() {
        System.out.println("我是目标角色已经使用的接口");
    }
}

源角色:

 public class Adaptee {

    public void doSomething() {
        System.out.println("源角色做了一些事情。。。");
    }
}

适配器类:

public class Adapter extends Adaptee implements Target {
    //适配器角色
    public void request() {
        super.doSomething();
    }
}

场景类:

public static void main(String[] args) {
        //原有的业务逻辑
        Target target = new ConcreteTarget();
        target.request();
        //增加了适配器角色之后的业务逻辑
        target = new Adapter();
        target.request();
    }

优点

  • 增加类的透明性,对高层次模块透明,他们只关心target目标对象。
  • 提高了类的复用度,源角色在原有的系统中还是可以正常使用,在目标角色中也可以充当新演员。
  • 灵活性好, 不需要适配器,直接删掉就可以。

适用场景

比如系统扩展,需要使用一个已有或新建立的类,但是这个类又不符合系统的接口,那么适配器就是一个很好的选择。

注意事项

适配器模式最好在详细设计阶段不要考虑它,主要用于已经投产的接口,扩展的时候使用。

实践

在java.io中使用了适配器模式。
io中的适配器模式
如图所示,InputStream是源角色, Reader是目标角色, InputStreamReader是核心的适配器角色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值