`
从此醉
  • 浏览: 1117015 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

设计模式—适配器模式

 
阅读更多
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17659905

前言

适配器模式在设计模式体系中属于结构型模式,可以分为三类:类的适配器模式、对象的适配器模式和接口的适配器模式,由于类和接口的适配器模式需要适配器继承原有的类,而纯面向对象语言Java、C#都是不支持多继承的,这在一定程度上制约了类和接口的适配器模式的使用场景,故使用的时候要注意。

使用目的:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

类适配器模式

说明:

当新接口出现的时候,由于和老的接口不兼容,这个时候,我们采用一个适配器类实现新的接口并且继承老的业务类,这样就能同时处理新老业务。

示例代码:

/**
 * 原始类
 */
class Source {
    public void oldFunction() {
        System.out.println("oldFunction:Source");
    }
}

interface Target {
    void oldFunction();

    // 新接口
    void newFunction();
}

// 适配器,用来做接口转换
class Adapter extends Source implements Target {

    public Adapter() {
        super();
    }

    @Override
    public void newFunction() {
        System.out.println("newFunction:Adapter");
    }
}

public class A {
    public static void main(String args[]) {
        Target target = new Adapter();
        target.oldFunction();
        target.newFunction();
    }
}

输出:

oldFunction:Source
newFunction:Adapter

对象适配器模式

说明:当新接口出现的时候,由于和老的接口不兼容,这个时候,我们采用一个适配器类实现新的接口并在内部持有一个老业务逻辑的对象,这样就能把对老接口的调用全部中转给老的业务逻辑,从而解决接口的兼容性问题

示例代码:

/**
 * 原始类
 */
class Source {
    public void oldFunction() {
        System.out.println("oldFunction:Source");
    }
}

interface Target {
    void oldFunction();

    // 新接口
    void newFunction();
}

// 适配器,用来做接口转换
class Adapter implements Target {

    // 适配器内部持有的原始类对象
    private Source mSource;

    public Adapter(Source source) {
        mSource = source;
    }

    @Override
    public void oldFunction() {
        // 这里调用原始类中的方法
        mSource.oldFunction();
    }

    @Override
    public void newFunction() {
        System.out.println("newFunction:Adapter");
    }

}

public class A {
    public static void main(String args[]) {
        Source source = new Source();
        Target target = new Adapter(source);
        target.oldFunction();
        target.newFunction();
    }
}

输出:

oldFunction:Source
newFunction:Adapter

接口适配器模式

说明:也叫缺省适配器模式,主要解决接口的复用问题:有时候可能我们的业务只需要使用接口中的某一个方法而不是全部方法,但是由于接口的语言特性而不得不实现全部的抽象方法,这样就会使得接口的使用过程很麻烦,特别是接口中存在很多抽象方法的时候。面对接口的这类问题,我们可以采用一个抽象类(也可以不是抽象类)去实现接口,然后让我们的类去继承这个抽象类同时只重写我们感兴趣的方法即可。

示例代码:

interface Target {
    void function1();

    void function2();

    void function3();

    void function4();
}

//TargetWrapper实现了Target接口,并给出了默认实现
abstract class TargetWrapper implements Target {
    @Override
    public void function1() {
        System.out.println("function1:TargetWrapper");
    }

    @Override
    public void function2() {
    }

    @Override
    public void function3() {
    }

    @Override
    public void function4() {
    }
}

// 适配器,继承TargetWrapper,重写自己感兴趣的方法
class Adapter extends TargetWrapper {

    public Adapter() {
        super();
    }

    @Override
    public void function2() {
        System.out.println("function4:Adapter");
    }
}

public class A {
    public static void main(String args[]) {
        Target target = new Adapter();
        target.function1();
        target.function2();
    }
}

输出:

function1:TargetWrapper
function4:Adapter

分享到:
评论

相关推荐

    设计模式适配器模式PPT学习教案.pptx

    适配器模式是一种结构型设计模式,主要解决的是不同接口之间不兼容的问题,使得原本由于接口不匹配而无法协作的类能够协同工作。适配器模式分为类适配器和对象适配器两种形式。 在类适配器模式中,适配器类直接继承...

    设计模式适配器模式

    适配器模式是一种结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式常用于解决旧代码与新代码之间的兼容性问题,或者是将第三方库的API转换为更适合我们项目需求的形式。适配器模式的核心...

    Java设计模式适配器模式代码架构

    Java设计模式中的适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是将不兼容的接口转换为用户期望的接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式有两种形式:类适配器...

    iOS 设计模式 适配器模式

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在iOS开发中,这种模式尤其有用,因为我们需要将不同的组件或库集成到一个统一的系统中,而这些组件或库可能有着各自独立的设计和接口。适配器...

    设计模式的适配器模式的例子

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不同接口的类之间进行通信。适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类...

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

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

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

    设计模式适配器模式讲解

    ### 设计模式之适配器模式详解 #### 一、适配器模式概述 适配器模式(Adapter Pattern)是一种常用的软件设计模式,它属于结构型模式的一种。该模式的主要目的是解决不同接口之间的兼容性问题,使原本由于接口不...

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

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件开发中,我们常常遇到这样的情况:需要使用一个已经存在的类,但是它的接口与我们的需求不匹配,这时候适配器模式就能派上用场。适配器...

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

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

    设计模式实验报告-适配器模式.docx

    ### 设计模式实验报告——适配器模式 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它为解决常见问题提供了一种可复用的设计思路,帮助开发者构建出更加灵活、易于维护的系统。在...

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

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

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

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

    设计模式之适配器模式

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

    设计模式 适配器

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在iOS开发中,这种模式尤其常见,因为不同的组件、类库或框架可能有着不同的接口要求,而适配器则起到了桥梁的作用,使得它们能够协同工作。...

    适配器设计模式ppt

    适配器设计模式 适配器设计模式是一种结构型设计模式,用于解决接口不兼容的问题。它允许两个原本不能一起工作的对象 совместно工作。 在现实生活中,我们经常遇到适配器的使用,例如欧式插座和笔记本...

    JAVA设计模式(抽象类与适配器模式)

    适配器模式是一种结构型设计模式,它的主要作用是在不修改原有类的情况下,使两个接口不兼容的类能够协同工作。在Java中,适配器模式有两种形式:类适配器和对象适配器。类适配器模式通过继承目标接口和适配者类来...

Global site tag (gtag.js) - Google Analytics