适配器模式
来源:互联网 发布:如何编写淘宝客招募贴 编辑:程序博客网 时间:2024/05/29 02:10
这一篇博客记录一下适配器模式。
简单来说,适配器的作用就是将一个接口转换成另一个接口,以符合客户的期望。
我们就以手机通过USB线充电的场景为例,看看适配器模式。
如上图所示,手机充电时需要的实际上是一个USB接口。
但是,现在只有一个常规的插座可以供电。
此时,只要有一个手机充电插头,
就能满足手机充电的需求了。
上述例子中:
手机就是用户,它期待USB接口;
手机充电插头就是适配器,它可以将插座接口,
转化为USB接口,满足客户的需求。
在理解了适配器的大致情况后,
我们就可以看看适配器模式的定义及结构图了。
适配器模式将一个类的接口,转换成客户期望的另一个接口。
适配器让原本接口不兼容的类可以合作无间。
结合上图,我们总结下客户使用适配器的过程:
1、客户通过目标接口调用适配器的方法对适配器发出请求。
2、适配器使用被适配者的一个或多个接口来完成实际的工作。
3、客户收到返回结果,但并未察觉到适配器在其中进行了转换作用。
从上图还可以看出,被适配者的任何子类都可以搭配适配器使用。
根据上述介绍可以看出,适配器的用法还是很简单的,
给出Head First上的一个示例:
//Emueration适配器,将Emueration适配成Iteratorpublic class EnumerationIterator implements Iterator { //Adaptee Enumeration enum; public EnumerationIterator(Enumeration enum) { this.enum = enum; } //Iterator的接口实际上由Enumeration来实现 public boolean hasNext() { return enum.hasMoreElements(); } public Object next() { return enum.nextElement(); } //Enumeration不提供类似remove的功能,因此抛出异常 //适配器模式也不是万能的 public void remove() { throw new UnsupportedOperationException(); }}
在文章的最后,稍微提一下:
从结构来看,适配器模式和装饰者模式有些相似之处。
例如,装饰者需要持有被装饰对象,适配器也持有被适配对象。
它们二者的区别在于:
装饰者的目的是:不改变接口,但加入责任;
适配器的目的是:将一个接口转化成另一个接口。
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- UDP服务器端和客户端程序设计
- 基于vmware下的Ubuntu14.04下使用问题总结与技巧
- Android 注解ButterKnife绑定控件使用指南
- HTTP协议
- try,catch,finally分别在什么情况下使用
- 适配器模式
- Fisher–Yates shuffle 算法 Go 语言实现
- Ubuntu下创建Android Studio启动图标
- Javascript的script标签中的id属性
- 关于简易下载中途取消下载问题
- 怎么轻松学习JavaScript
- 我的第一篇博客
- API网关 动态路由、监控、授权、安全、调度
- Unity脚本引用原理,修复Unity脚本引用丢失,源码脚本与dll中的脚本引用互换 .