适配器模式
来源:互联网 发布:无线网测试软件 编辑:程序博客网 时间:2024/06/07 06:17
适配器模式
什么是适配器模式
当你想使用一个已有的类,但是这个类的接口跟你的又不一样,不能拿来直接用,这个时候你就需要一个适配器。
适配器模式类图
假如你去香港旅游,买的iphone6的充电器插头是英标的,是三脚的方形的插头。而我们国标的插头是两只脚。
在国内的家中只能用国标接口进行充电。
` //国标插头 public interface CnPlugInterface { void chargeWith2Pins(); } //实现国标插座的充电方法 public class CnPlugin implements CnPluginInterface { public void chargeWith2Pins() { System.out.println("charge with CnPlugin"); } } //在国家中内充电 public class Home { private CnPluginInterface cnPlugin; public Home() {} public Home(CnPluginInterface cnPlugin) { this.cnPlugin = cnPlugin; } public void setPlugin(CnPluginInterface cnPlugin) { this.cnPlugin = cnPlugin; } //充电 public void charge() { cnPlugin.chargeWith2Pins(); } }`
然而,当把iphone6带回来时,因为与家里的插座不匹配,所以需要一个适配器。这个适配器必须满足以下条件:
- 必须符合国内标准的接口,否则的话还是没办法插到国内插座中;
- 在调用上面实现的国标接口进行充电时,提供一种机制,将这个调用转到对英标接口的调用。
这就要求:
- 适配器必须实现原有的旧的接口
适配器对象中持有对新接口的引用,当调用旧接口时,将这个调用委托给实现新接口的对象来处理,也就是在适配器对象中组合一个新接口。
`
//英标插头
public interface EnPluginInterface {
void chargeWith3Pins();
}
//实现英标插座的充电方法
public class EnPlugin implements EnPluginInterface {
public void chargeWith3Pins() {
System.out.println(“charge with EnPlugin”);
}
}//适配器public class PluginAdapter implements CnPluginInterface { private EnPlugInterface enPlugin; public PluginAdapter(EnPluginInterface enPlugin) { this.enPlugin = enPlugin; } public void chargeWith2Pins() { enPlugin.chargeWith3Pins(); }}//适配器测试类public class AdapterTest { public static void main(String[] args) { EnPluginInterface enPlugin = new EnPlugin(); Home home = new Home(); PluginAdapter pluginAdapter = new PluginAdapter(enPlugin); home.setPlugin(pluginAdapter); home.charge(); }}
`
适配器的三个特点:
- 适配器对象实现原有接口
- 适配器对象组合一个实现新接口的对象
- 对适配器原有接口方法的调用被委托给新接口的实例的特定方法。
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 快速集成推送通知功能---百度云推送
- php微信
- codevs1262 不要把球传我
- [学习笔记]Hadoop安装_配置
- hihoCoder 1014 Trie树 字典树模板
- 适配器模式
- 考研数学笔记 56~60
- 权限管理--------分配权限
- OpenJudge 1996:登山——题解
- 装饰者模式
- Joseph
- malloc 背后的系统知识
- 单例模式
- mybatis使用foreach语句实现IN查询