fancydeepin
毋意,毋必,毋固,毋我。
BlogJava
首页
新随笔
联系
聚合
管理
随笔-126 评论-247 文章-5 trackbacks-0
java 适配器模式(Adapter)
适配器模式
(
Adapter 模式
),
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
1. 类的适配器模式结构图:
从图中可以看出,Adaptee 类(源类)并没有 operation2() 这个方法,而客户端正期待这个方法,为使客户端能够使用 Adaptee 类,在此为其提供了一个中间环节,
即 Adapter 类(适配器类),把 Adaptee 的 API 与 Target 的 API 衔接起来,在这里,Adapter 与 Adaptee 是继承关系,这就决定了这个适配器的模式是类。
示意图的实现源码:
package
pattern.adapter;
/**
* -----------------------------------------
* @描述 源类(需要适配的类)
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-5 <p>
* -----------------------------------------
*/
public
class
Adaptee
{
public
void
operation1()
{
//
do other things here
}
}
package
pattern.adapter;
/**
* -----------------------------------------
* @描述 目标接口
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-5 <p>
* -----------------------------------------
*/
public
interface
Target
{
public
void
operation1();
public
void
operation2();
}
package
pattern.adapter;
/**
* -----------------------------------------
* @描述 适配器
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-5 <p>
* -----------------------------------------
*/
public
class
Adapter
extends
Adaptee
implements
Target
{
public
void
operation2()
{
//
do other things here
}
}
2. 对象的适配器模式结构图:
从图中可以看出,Adaptee 类(源类)并没有 operation2() 这个方法,而客户端正期待这个方法,为使客户端能够使用 Adaptee 类,在此为其提供了一个包装类,
即 Adapter 类(适配器类),它包装了一个 Adaptee 类的实例,从而此包装类能够把 Adaptee 的 API 与 Target 的 API 衔接起来,在这里,Adapter 与 Adaptee 是委派关系,
这就决定了这个适配器的模式是对象。
示意图中的 Target 和 Adaptee 源代码不变,下面来看一下 Adapter 类的源码:
package
pattern.adapter;
/**
* -----------------------------------------
* @描述 适配器
* @作者 fancy
* @邮箱 fancydeepin@yeah.net
* @日期 2012-8-5 <p>
* -----------------------------------------
*/
public
class
Adapter
implements
Target
{
private
Adaptee adaptee;
public
Adapter(Adaptee adaptee)
{
this
.adaptee
=
adaptee;
}
@Override
public
void
operation1()
{
adaptee.operation1();
}
@Override
public
void
operation2()
{
//
do other things here
}
}
posted on 2012-08-05 16:50
fancydeepin
阅读(1119)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
github
个人主页
beanutil
jutil
jexcel
orc
随笔分类
(8)
junit
maven(8)
随笔档案
(104)
2015年6月 (8)
2015年2月 (1)
2015年1月 (1)
2014年9月 (1)
2014年8月 (3)
2014年6月 (10)
2014年5月 (3)
2014年3月 (5)
2013年10月 (1)
2013年9月 (2)
2013年4月 (1)
2013年3月 (2)
2013年2月 (11)
2012年11月 (3)
2012年10月 (14)
2012年8月 (15)
2012年7月 (13)
2012年6月 (10)
最新随笔
1. maven 为测试环境、生产环境等不同环境打包
2. maven 多模块项目
3. nexus 搭建 maven 私服
4. maven 镜像
5. maven jetty 插件使用
6. maven jdk 版本配置
7. eclipse maven plugin 插件 安装 和 配置
8. maven 安装
9. ORCP : 从数据库表到 java 对象生成的 eclipse 插件
10. jexcel 读写EXCEL
11. linux 系列
12. spring mvc(2):请求地址映射(@RequestMapping)
13. spring mvc(1):基础入门
14. Java 验证码、二维码
15. GXT —— TreePanel 组件(一)
搜索
积分与排名
积分 - 1459451
排名 - 15
最新评论
1. re: Maven 手动添加 JAR 包到本地仓库[未登录]
刚安装好的maven,仓库里没有jar包,如何添加jar包呢?
--Firefly
2. re: java 建造者模式(Builder)
多谢,讲的很清楚
--Nimo
3. re: Maven 手动添加 JAR 包到本地仓库
很好很强大, 完美的解决了我的问题。。。
--klose
4. re: eclipse maven plugin 插件 安装 和 配置
@fancydeepin
链接还是失效了啊
--菜鸟一号
5. re: Maven 手动添加 JAR 包到本地仓库[未登录]
@呼吸~
你好,请问,怎么设置代理呢?
--paul
阅读排行榜
1. eclipse maven plugin 插件 安装 和 配置(325693)
2. Maven 手动添加 JAR 包到本地仓库(199568)
3. Lombok 安装、入门 - 消除冗长的 java 代码(154802)
4. java 异常捕捉 ( try catch finally ) 你真的掌握了吗?(70138)
5. maven jetty 插件使用(49019)
6. JSP/Servlet 工作原理(43088)
7. maven jdk 版本配置(40957)
8. spring mvc(2):请求地址映射(@RequestMapping)(39521)
9. 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ](31204)
10. maven 多模块项目(27832)