适配器模式(Adapter Pattern)

简介: 适配器模式(Adapter Pattern)

定义


将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。

1671088597123.jpg


代码实现


目标角色:

public interface Target {
    //目标角色生产上已经稳定使用的接口
    void request();
}
复制代码

目标角色实现类:

public class ConcreteTarget implements Target {
    @Override
    public void request() {
        System.out.println("我是目标角色已经使用的接口");
    }
}
复制代码

源角色:

public class Adaptee {
    public void doSomething() {
        System.out.println("源角色做了一些事情。。。");
    }
}
复制代码

适配器类:

public class Adapter extends Adaptee implements Target {
    //适配器角色
    public void request() {
        super.doSomething();
    }
}
复制代码

场景类:

public static void main(String[] args) {
        //原有的业务逻辑
        Target target = new ConcreteTarget();
        target.request();
        //增加了适配器角色之后的业务逻辑
        target = new Adapter();
        target.request();
    }
复制代码


优点


  • 增加类的透明性,对高层次模块透明,他们只关心target目标对象。
  • 提高了类的复用度,源角色在原有的系统中还是可以正常使用,在目标角色中也可以充当新演员。
  • 灵活性好, 不需要适配器,直接删掉就可以。


适用场景


比如系统扩展,需要使用一个已有或新建立的类,但是这个类又不符合系统的接口,那么适配器就是一个很好的选择。


注意事项


适配器模式最好在详细设计阶段不要考虑它,主要用于已经投产的接口,扩展的时候使用。


实践


在java.io中使用了适配器模式。

1671088619686.jpg

如图所示,InputStream是源角色, Reader是目标角色, InputStreamReader是核心的适配器角色。

目录
相关文章
|
设计模式
设计模式8 - 适配器模式【Adapter Pattern】
设计模式8 - 适配器模式【Adapter Pattern】
50 0
|
3月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
7月前
适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)
|
设计模式 机器学习/深度学习 Java
组合模式(Composite Pattern)
组合模式(Composite Pattern)是一种结构型设计模式。
86 0
|
Java 程序员 API
结构型模式 - 适配器模式(Adapter Pattern)
结构型模式 - 适配器模式(Adapter Pattern)
|
设计模式 Java 程序员
适配器模式(Adapter Pattern)
适配器模式是一种结构型设计模式, 它能将接口转换为客户期望的另一个接口,也就是说它能使接口不兼容的对象能够相互合作。
129 0
适配器模式(Adapter Pattern)
|
Java C#
使用C# (.NET Core) 实现适配器模式 (Adapter Pattern) 和外观模式 (Facade Pattern)
本文的概念内容来自深入浅出设计模式一书 现实世界中的适配器(模式) 我带着一个国标插头的笔记本电脑, 来到欧洲, 想插入到欧洲标准的墙壁插座里面, 就需要用中间这个电源适配器. 面向对象的适配器 你有个老系统, 现在来了个新供应商的类, 但是它们的接口不同, 如何使用这个新供应商的类呢? 首先, 我们不想修改现有代码, 你也不能修改供应商的代码.
1766 0
适配器模式(Adapter)
一 概述 定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。
917 0