适配器模式

1、使用场景

JDBC驱动程序:不同的数据库提供商实现了不同的JDBC驱动接口,使用适配器模式可以将这些不同的接口适配为标准的JDBC接口,提高应用程序的可移植性。

2、原理

第一种方式是关联使用:把被适配的对象放到适配器里面,通过访问适配器的方法间接调用被适配的对象

第二种方式是继承,成为子类,通过访问子类间接访问原有类

3、关联使用的案例

4、继承方式的案例

  • 翻译类‘Translator’ ,里面有‘TranslateInZh’和‘TranslateInEn’方法。(对象、接口适配器模式也要用)
/**
 * @author Created by njy on 2023/6/8
 * 源对象(source):充当翻译
 */
public class Translator {
 
    //英——》汉
    public void translateInZh(String words){
        if("hello world!".equals(words)){
            System.out.println("翻译成中文:”你好世界!“");
        }
    }
 
    //汉——》英
    public void translateInEn(String words){
        if("你好世界!".equals(words)){
            System.out.println("Translate in English:”hello world!“");
        }
    }
}
  • 适配器接口
/**
 * @author Created by njy on 2023/6/8
 * 目标接口(target)
 */
public interface Target {
 
    /**
     * 翻译
     * @param source 母语
     * @param target 要翻译成的语种
     * @param words 内容
     */
    void translate(String source,String target,String words);
}

适配器类继承原有类

/**
 * @author Created by njy on 2023/6/11
 * 类适配器:通过多重继承目标接口和被适配者类方式来实现适配
 */
public class ClassAdapter extends Translator implements Target {
 
    @Override
    public void translate(String source, String target, String words) {
        if("中文".equals(source) && "英文".equals(target)) {
            //汉--》英
            this.translateInEn(words);
        } else {
            //英--》汉
            this.translateInZh(words);
        }
    }
}

测试类

/**
 * @author Created by njy on 2023/6/8
 */
@SpringBootTest
public class TestAdapter {
 
    //类适配器
    @Test
    void classAdapter(){
        //创建一个类适配器对象
        ClassAdapter adapter=new ClassAdapter();
        adapter.translate("中文", "英文", "你好世界!");
        adapter.translate("英语","中文","hello world!");
    }
}

 

 

相关推荐

  1. 适配器模式

    2023-12-20 21:38:02       25 阅读
  2. 适配器模式

    2023-12-20 21:38:02       30 阅读
  3. 适配器模式

    2023-12-20 21:38:02       25 阅读
  4. 适配器模式

    2023-12-20 21:38:02       26 阅读
  5. 适配器模式

    2023-12-20 21:38:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-20 21:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-20 21:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-20 21:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-20 21:38:02       20 阅读

热门阅读

  1. 58.Gin参数读取、绑定、文件上传

    2023-12-20 21:38:02       40 阅读
  2. [安洵杯 2019]game & [SUCTF2018]babyre

    2023-12-20 21:38:02       36 阅读
  3. 金融软件开发的 4 大挑战

    2023-12-20 21:38:02       46 阅读
  4. 基于QCC51XX芯片的GATT嵌入式开发

    2023-12-20 21:38:02       36 阅读
  5. 读写锁ReentrantReadWriteLock&StampLock详解与实践实例

    2023-12-20 21:38:02       30 阅读
  6. 电脑里的ip地址在哪里查找

    2023-12-20 21:38:02       35 阅读
  7. tp6使用Smarty模板引擎

    2023-12-20 21:38:02       35 阅读
  8. 如何用 Redis 中的 HyperLogLog 统计页面 UV?

    2023-12-20 21:38:02       41 阅读