Java优良的Adapter模式:适配器模式
作者:网络转载 发布时间:[ 2012/8/6 9:56:33 ] 推荐标签:
网上关于JAVA的适配器模式例子有很多,但真的有少实在不怎么样,看也不懂。自己总结了一个在性能和结构上都很容易理解的Adapter模式。
Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口形式。
在大规模的系统开发过程中,我们常常碰到诸如以下这些情况:
我们需要实现某些功能,这些功能已有还不太成熟的一个或多个外部组件,如果我们自己重新开发这些功能会花费大量时间;所以很多情况下会选择先暂时使用外部组件,以后再考虑随时替换。但这样一来,会带来一个问题,随着对外部组件库的替换,可能需要对引用该外部组件的源代码进行大面积的修改,因此也极可能引入新的问题等等。如何大限度的降低修改面呢?
Adapter模式是针对这种类似需求而提出来的。
Adapter模式通过定义一个新的接口(对要实现的功能加以抽象),和一个实现该接口的Adapter(适配器)类来透明地调用外部组件。这样替换外部组件时,多只要修改几个Adapter类可以了,其他源代码都不会受到影响。
实现Adapter模式的2种方法与范例
Adapter模式通过在Adapter类中调用外部组件来实现功能。
根据调用方式的不同,Adapter模式有2种实现方法:
1、通过继承实现Adapter
2、通过委让实现Adapter
为了能更清楚地说明2种实现方法的区别,我们举例说明:
比如,我们需要实现一个发送邮件的功能,需要用到一个名为OutMailer的外部组件,因为上述原因,我们决定用Adapter模式实现对OutMailer的透明调用。
首先,我们把邮件发送的功能抽象成一个接口:
1.IMailer.java
2.interface IMailer {
3. //发送邮件
4. publicvoid sendMail();
5.}
然后定一个实现IMailer接口的MailerAdapter类。
下面我们来看看MailerAdapter的实现方法。
通过继承实现Adapter
MailerAdapter.java
1.class MailerAdapter extends OutMailerimplements IMailer {
2. //发送邮件
3. publicvoid sendMail() {
4. //调用OutMailer.sendMail()方法实现邮件发送
5. this.sendMail();
6. }
7.8. //这里省略其他方法
9.}
通过委让实现Adapter
MailerAdapter.java
1.class MailerAdapter implements IMailer {
2. private OutMailer outMailer =new OutMailer();
3. //发送邮件
4. publicvoid sendMail() {
5. //调用OutMailer.sendMail()方法实现邮件发送
6. outMailer.sendMail();
7. }
8.9. //这里省略其他方法
10.}
不管是通过继承实现Adapter,还是通过委让实现Adapter,调用方MailerClient的调用方法完全一样,如下:
MailerClient.java
1.IMailer mailer =new MailerAdapter();
2....
3.mailer.sendMail();
我们可以看到,这里完全没有直接调用OutMailer,也是说OutMailer即使被替换了,我们也不用对MailerClient做任何修改。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11