双向适配器 java_类适配器,双向适配器

本文介绍了适配器模式的类适配器形式,解释了类适配器模式中适配器继承适配者并实现目标接口的情况。同时探讨了Java等不支持多重类继承的语言中类适配器的局限性。接着,文章讨论了双向适配器的概念,即适配器同时适应目标类和适配者类,但实际开发中较少使用。
摘要由CSDN通过智能技术生成

不兼容结构的协调——适配器模式(三)

类适配器

除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系,而类适配器模式中适配器和适配者是继承关系,类适配器模式结构如图所示:

431c9f7319ae0a0860e6dfbc055319a8.png

根据类适配器模式结构图,适配器类实现了抽象目标类接口 Target,并继承了适配者类,在适配器类的 request() 方法中调用所继承的适配者类的 specificRequest() 方法,实现了适配。

典型的类适配器代码如下所示:

class Adapter extends Adaptee implements Target {

public void request() {

specificRequest();

}

}

由于 Java、C# 等语言不支持多重类继承,因此类适配器的使用受到很多限制,例如如果目标抽象类 Target 不是接口,而是一个类,就无法使用类适配器;此外,如果适配者 Adapter 为最终(Final)类,也无法使用类适配器。在 Java 等面向对象编程语言中,大部分情况下我们使用的是对象适配器,类适配器较少使用。

思考

在类适配器中,一个适配器能否适配多个适配者?如果能,应该如何实现?如果不能,请说明原因?

双向适配器

在对象适配器的使用过程中,如果在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法,那么该适配器就是一个双向适配器,其结构示意图如图所示:

431c9f7319ae0a0860e6dfbc055319a8.png

双向适配器的实现较为复杂,其典型代码如下所示:

class Adapter implements Target,Adaptee {

//同时维持对抽象目标类和适配者的引用

private Target target;

private Adaptee adaptee;

public Adapter(Target target) {

this.target = target;

}

public Adapter(Adaptee adaptee) {

this.adaptee = adaptee;

}

public void request() {

adaptee.specificRequest();

}

public void specificRequest() {

target.request();

}

}

在实际开发中,我们很少使用双向适配器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值