适配器模式

本文介绍了JDBC驱动程序中如何使用适配器模式提高可移植性,以及通过关联使用和继承方式实现的翻译类适配器实例,展示了如何在实际编程中应用对象适配器模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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!");
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值