适配器模式

作者: Ludwig_van | 来源:发表于2020-03-14 15:44 被阅读0次

适配器模式:
作为不兼容接口之间调用的桥梁;
将一个类的接口转换成客户希望的另外一个接口;
使用场景:
当调用双方都不太容易修改的时候,为了复用现有组件可以使用适配器模式;在系统中接入第三方组
件的时候经常被使用到;

适配器模式经典案例:

  1. 一个客户(系统)的支付接口需要调用第三方支付功能;
    第三方支付有支付宝,微信,银联等。不同的支付有不同的接口;
    这时需要一个适配器做接口转换;如图(图1)
    (每种第三方服务对应一个适配器,而不是用一个大的适配器,因为后续可能会增加第三方服务,为了遵循开闭原则,所以每增加一个第三方服务都对应增加一个适配器。)

    适配器模式图.png
  2. MyBatis 日志级别的转换;
    mybatis 中日志级别有四个: trace , debug ,info ,warn , error;
    系统本身接入的第三方日志系统,比如说sfl4J,Log4J2,Log4J,JdkLog
    这些第三方的日志级别都不一样,系统希望能将这些第三方的服务日志级别都转换成统一的四个级别。

适配器实现的要素:

适配器需要实现和目标角色的接口;
适配器要依赖适配者角色的接口;
(一定要面向接口依赖)。
Target:目标角色,期待得到的接口. (系统定义的日志接口)
Adaptee:适配者角色,被适配的接口. (第三方日志接口)
Adapter:适配器角色,将源接口转换成目标接口。

适配器实现图.png

日志适配器具体代码:

import java.util.logging.Level;
//jdk日志的适配器 实现mybatis自己的日志接口-Log
public class Jdk14LoggingImpl implement Log{
    //依赖真正提供日志能力的jdk日志类,此处面向接口依赖
    private final Logger log;
    
    //提供构造器注入方式
    public Jdk14LoggingImpl(String clazz){
        log = Logger.getLogger();
    }
    
    //如果系统调用本身的error级别,则这里会转换成调用jdk的SERVER级别
    @Override
    public void error(String s){
        log.log(Level.SERVER,s)
    }
}

相关文章

  • Java设计模式(二)

    talk is cheap show me the code 适配器模式 类适配器模式 接口适配器模式 对象适配器...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 设计模式之适配器模式

    适配器模式: 类适配器模式、对象适配器模式、接口适配器模式 1.类适配器模式:新的接口出现了,但是和老的接口不兼容...

  • 学习iOS设计模式第一章 适配器(Adapter)

    今天学习了iOS设计模式中的适配器模式,适配器有两种模式对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包...

  • 第4章 结构型模式-适配器模式

    一、适配器模式简介 二、适配器模式的优点 三、适配器模式的实例

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    先直观感受下什么叫适配器 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 对象适配器模...

  • 适配器模式

    适配器模式 一、适配器模式定义 适配器模式的定义是,Convert the interface of a clas...

  • 设计模式:结构型

    享元模式 (Pools,Message) 代理模式 适配器模式 :类适配器和对象适配器 装饰者模式 外观模式 桥接...

网友评论

    本文标题:适配器模式

    本文链接:https://www.haomeiwen.com/subject/jfmvshtx.html