JAVA设计模式——(1)适配器模式

JAVA设计模式------(1)适配器模式

目的

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

理解

可以想象成一个国标的插头,结果插座是德标的,这会想要使用这个插座,就需要一个德标转国标的适配器,那么这个适配器 需要继承 德标(源角色)能够充电的能力(或者其他能力)吧,还要具备转换为国标(目标角色)的能力,那国标就是新需求,需要实现接口

具体而言,适配器具备源角色的功能,又能扩展目标角色的功能。

实现

源角色:

java 复制代码
package cn.sh.designepattern.example02;

/**
 * @Author song
 * @Version 0.0.1
 * @Date 2025/4/19 19:55
 * @Contact [email protected]
 */
public class OuBiao {

    public void chargeOuBiao(){
        System.out.println("欧标充电器充电");
    }
}

目标角色:

java 复制代码
package cn.sh.designepattern.example02;

/**
 * @Author song
 * @Version 0.0.1
 * @Date 2025/4/19 19:55
 * @Contact [email protected]
 */
public interface GuoBiao {

    public void chargeGuoBiao();

}

适配器:

java 复制代码
package cn.sh.designepattern.example02;

/**
 * @Author song
 * @Version 0.0.1
 * @Date 2025/4/19 19:56
 * @Contact [email protected]
 */
public class ChargerAdapter extends OuBiao implements GuoBiao{

    @Override
    public void chargeGuoBiao() {
        super.chargeOuBiao();
        System.out.println("国标充电");
    }

    public static void main(String[] args) {
        GuoBiao guoBiao = new ChargerAdapter();
        guoBiao.chargeGuoBiao();
    }
}

优势

对于已经投产的系统功能进行扩展,需要使用已有类,但是这个类不符合系统重的接口,则可以使用适配器模型,将这个类进行转换,转换成符合系统接口、可以使用的类。

另外适配可以重写一些被适配类的行为,增强其功能或者修改部分功能。

相关推荐
SuperherRo30 分钟前
Web开发-JavaEE应用&原生和FastJson反序列化&URLDNS链&JDBC链&Gadget手搓
java·java-ee·jdbc·fastjson·反序列化·urldns
xxjiaz2 小时前
二分查找-LeetCode
java·数据结构·算法·leetcode
nofaluse2 小时前
JavaWeb开发——文件上传
java·spring boot
爱的叹息3 小时前
【java实现+4种变体完整例子】排序算法中【插入排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
java·算法·排序算法
爱的叹息3 小时前
【java实现+4种变体完整例子】排序算法中【快速排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
java·算法·排序算法
6v6-博客3 小时前
2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
java·开发语言·php
Miraitowa_cheems3 小时前
[Java EE] Spring AOP 和 事务
java·java-ee·aop·spring 事务
光头小小强0073 小时前
致远OA——自定义开发rest接口
java·经验分享·spring·tomcat
twj_one4 小时前
Elasticsearch的Java客户端库QueryBuilders查询方法大全
java·elasticsearch
周Echo周4 小时前
16、堆基础知识点和priority_queue的模拟实现
java·linux·c语言·开发语言·c++·后端·算法