持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
对适配器模式可以细分成三种:
- 类适配器模式
- 对象适配器模式
- 接口适配器模式
上一篇文章我们举例讲了类适配器模式,这篇文章我们继续讲解一下对象适配器模式。
适配器模式使用举例
对象适配器模式
对象适配模式其实秉承着适配器模式的相关理念,即内部依旧包含源头、适配类、目标三个角色。
对比“类适配模式”的概念我们可以类推得到结论:对象适配模式就是以对象为着手点的设计模式,通过组合来实现适配器功能的,也就是说适配器拥有源头角色的实例(对象)。
这里我们举例:如何在pc 上运行手机app。
首先我们定义源头类,即手机上运行app:
public class MobilePhoneExecuteApp {
public void runOnMobilePhone() {
System.out.println("运行掘金手机客户端");
}
}
接下来我们定义目标接口:
public interface PcExecuteApp {
void run();
}
最后我们定义适配器角色代码:
public class Adapter implements PcExecuteApp {
MobilePhoneExecuteApp mobilePhoneExecuteApp;
public Adapter(MobilePhoneExecuteApp mobilePhoneExecuteApp) {
this.mobilePhoneExecuteApp = mobilePhoneExecuteApp;
}
@Override
public void runOnPc() {
mobilePhoneExecuteApp.runOnMobilePhone();
}
}
通过如上适配器类我们可以看出,在适配器类中存在一个有参构造函数,参数是源头类的实例。
因为适配器类中有这个实例引用,所以就可以通过这个实例引用来进行适配转换,从而达到“适配”的目的。
使用:
public static void main(String[] args) {
MobilePhoneExecuteApp mobilePhoneExecuteApp = new MobilePhoneExecuteApp();
PcExecuteApp pcExecuteApp = new Adapter(mobilePhoneExecuteApp);
pcExecuteApp.runOnPc();
}
输出:
运行掘金手机客户端
通过以上方式,我们就可以达到“在pc 上运行手机app”的目的了。
上面的示例代码也很清晰明了,及可以实现:传入参数为“源头类”的实例,然后通过适配器,将其转换为目标角色的api,即实现了PcExecuteApp 调用run 方法的时候,能运行掘金手机app。
总结
我们已经讲解了适配器模式的两种使用方法,相信在看完这两种实现方法之后,我们对适配器模式也有了比较直观的理解。下一篇文章我们会介绍最后一种适配器模式:接口适配器模式。