`
wsql
  • 浏览: 12068093 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

亲身实践,JAVA最优良的Adapter模式--适配器模式

 
阅读更多

网上关于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的透明调用。

首先,我们把邮件发送的功能抽象成一个接口:

IMailer.java
interface IMailer {
    //发送邮件
    publicvoid sendMail();
}

然后定一个实现IMailer接口的MailerAdapter类。

下面我们来看看MailerAdapter的实现方法。

通过继承实现Adapter
MailerAdapter.java

class MailerAdapter extends OutMailerimplements IMailer {
    //发送邮件
    publicvoid sendMail() {
        //调用OutMailer.sendMail()方法实现邮件发送
        this.sendMail();
    }

    //这里省略其他方法
}

通过委让实现Adapter

MailerAdapter.java

class MailerAdapter implements IMailer {
    private OutMailer outMailer =new OutMailer();
    //发送邮件
    publicvoid sendMail() {
        //调用OutMailer.sendMail()方法实现邮件发送
        outMailer.sendMail();
    }

    //这里省略其他方法
}

不管是通过继承实现Adapter,还是通过委让实现Adapter,调用方MailerClient的调用方法完全一样,如下:
MailerClient.java

IMailer mailer =new MailerAdapter();
...
mailer.sendMail();

我们可以看到,这里完全没有直接调用OutMailer,也就是说OutMailer即使被替换了,我们也不用对MailerClient做任何修改。

分享到:
评论

相关推荐

    设计模式--适配器模式java例子

    在“设计模式--适配器模式java例子”中,我们可以假设有一个遗留的`OldLibrary`,它的接口与我们当前项目的需求不一致。例如,`OldLibrary`有一个`OldDevice`类,它有一个方法`oldMethod()`,而我们的新系统需要一个...

    java常用设计模式-适配器模式

    java常用设计模式-适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 ...

    java设计模式之适配器模式

    在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。本文将深入探讨适配器模式的概念、类型、优点和如何在Java中实现。 一、适配器模式概念 适配器...

    23种设计模式--适配器模式

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,这种模式常被用来解决旧系统与新系统、第三方库或者不同组件之间的接口不匹配问题。适配器模式的核心思想是通过创建一个新的类...

    讲故事,学(Java)设计模式-适配器模式Java开发Ja

    在IT行业中,设计模式是软件开发中的重要概念,它们代表了在特定场景下解决常见问题的最佳实践。适配器模式是其中的一种,尤其在Java开发中广泛应用。适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口...

    java 汽车适配器(Adapter适配器模式)

    在Java中,适配器模式被广泛应用于解决系统间的兼容性问题,尤其是当我们需要将一个已有的类库或者对象与我们的系统接口相匹配时。汽车适配器的概念是一个具体的实例,可能指的是在汽车电子系统中,如何通过适配器来...

    设计模式 - 适配器模式(C++实例)

    在`DesignMode_Adapter`这个压缩包文件中,可能包含了相关的C++源码示例,演示了如何创建和使用适配器模式。这些源码可能包括了目标接口、原始接口、适配器类的定义以及客户端如何通过适配器进行调用的示例。通过...

    设计模式之适配器模式Java实现和类设计图

    文件列表中的"adapter"可能包含了适配器模式的Java源代码文件,这些文件通常会包含以上提到的三个角色的定义。例如,可能会有`Target.java`(目标接口),`Adaptee.java`(被适配者类),以及`Adapter.java`(类...

    设计模式之 适配器 Adapter C++ 源码

    设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式之 适配器 Adapter C++ 源码 vs2019 工具,设计模式...

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    设计模式-适配器模式(讲解及其实现代码)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在处理系统集成、遗留代码重用以及不同接口之间兼容性问题时。适配器模式的主要目的是将两个不兼容的接口融合在一起,使得原本无法直接协作...

    java中适配器模式案例

    适配器模式是一种设计模式,它允许不兼容的类或接口之间进行通信,通过创建一个适配器类作为中间桥梁,使得原本不匹配的接口能够协同工作。...通过学习和实践适配器模式,开发者可以更好地应对复杂的软件集成挑战。

    设计模式之--适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    PHP5设计模式-适配器模式实现

    $adapter->execute(); ``` 通过这种方式,适配器模式帮助我们解决了接口不兼容的问题,同时保持了代码的整洁和模块化。它允许我们在不改变原有组件的情况下,灵活地扩展和集成新的功能,提升了代码的可重用性和可...

    Bluetooth USB Adapter ES-388.part02

    Bluetooth USB Adapter ES-388. 蓝牙适配器 驱动

    设计模式--适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    设计模式专题之(八)适配器模式---设计模式适配器模式示例代码(python--c++)

    在压缩包中,`Adapter.cpp`可能是C++实现适配器模式的代码文件,它可能包含了`CPlusPlusClass`和`CppAdapter`的定义。而`Adapter.py`则是Python版本的适配器实现,可能会包含`PythonAdapter`类,它将`CPlusPlusClass...

    Java优良的Adapter模式:适配器模式

    网上关于JAVA的适配器模式例子有很多,但真的有少实在不怎么样,看也不懂。自己总结了一个在性能和结构上都很容易理解的Adapter模式。  Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter...

    java 适配器模式

    在Java中,适配器模式是通过创建一个新的类(适配器类)来实现目标接口,该适配器类将原始类(被适配者)的接口转换为目标接口,使得原本不兼容的类可以协同工作。 适配器模式主要有两种形式:类适配器模式和对象...

Global site tag (gtag.js) - Google Analytics