JAVA设计模式-适配器模式
2023-03-31 10:45:46 时间
JAVA设计模式-适配器模式
介绍
适配器模式是一种结构型模式,它主要解决接口之间的兼容问题。当我们需要使用某个类的接口时,但是这个类的接口目前并不符合我们使用需求,不能直接使用,那我们可以采取调整类和接口的方式,但是如果这个接口是第三方提供的,修改不了或者类和接口目前大量使用,并且使用稳定,不能轻易改动时,我们可以使用适配器模式,在不改动这个类的前提下来满足目前系统的需求。生活中也有例子,例如:生活中m2硬盘转SATA接口的转换卡、美版、港版与国行的电源适配器。
图例
角色
- 目标接口(Target):定义满足目前系统需求的接口,可以是抽象类或者接口。
- 适配者类(Adapter):与目前系统需求不兼容的类,需要被适配的类。
- 适配器类(Adapter):实现目标抽象类或者接口和适配者类之间的转换。
- 客户类(Client):调用目标接口。
优点
- 将目标类和适配者类解耦,不需要改变原有代码即可满足目前需求。
- 具有较高的灵活性和可扩展性。
代码示例-以m2硬盘转SATA接口为例
InterfaceSata(Target)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: SATA接口
* @Author: xpy
* @Date: Created in 2022年10月04日 7:52 下午
*/
public interface InterfaceSata {
String installInterfaceSata();
}
HardDiskM2(Adapter)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: m2硬盘
* @Author: xpy
* @Date: Created in 2022年10月04日 7:50 下午
*/
public class HardDiskM2 {
public String installInterfaceM2(){
System.out.println("m2硬盘安装接口是m2");
return "m2";
}
}
InterfaceAdapter(Adapter)
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: 适配器
* @Author: xpy
* @Date: Created in 2022年10月04日 7:53 下午
*/
public class InterfaceAdapter implements InterfaceSata {
private HardDiskM2 hardDiskM2;
public InterfaceAdapter(HardDiskM2 hardDiskM2) {
this.hardDiskM2 = hardDiskM2;
}
public String installInterfaceSata() {
String m2 = hardDiskM2.installInterfaceM2();
// 进行m2接口转换sata接口逻辑
// ......
return "sata";
}
}
Client
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.adapter
* @Description: 客户类
* @Author: xpy
* @Date: Created in 2022年10月04日 8:28 下午
*/
public class Client {
public static void main(String[] args) {
InterfaceSata interfaceSata = new InterfaceAdapter(new HardDiskM2());
interfaceSata.installInterfaceSata();
}
}
原文链接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi---shi-pei-qi-mo-shi
相关文章
- 硬核 | 基于ASM实现Java类与接口的动态代理
- 作为一名 Java 开发人员,如何在数十年中保持快乐和相关性
- 腾讯会议部分功能开始收费、Windows 10将于明年2月永久禁用IE11、华为前三季研发费用超1100亿 | T资讯
- 甲骨文加仓Java,数据库被榨干了?
- 一次单元测试优化的过程总结
- Java 实现100 万+并发,搞懂这些,骚操作!
- Java性能优化的七个方向
- 不懂优雅停机,搞挂了线上服务该咋办?
- 如何在 Ubuntu Linux 中正确地设置 JAVA_HOME 变量
- 如何在 Linux 上手动安装 Java
- 如何在 Ubuntu 中运行 Java 程序
- HarmonyOS使用Java获取位置信息
- 如何在 Fedora Linux 上安装 Java
- HarmonyOS基于Java开发的服务卡片
- 《漫谈 MQ》设计 MQ 的 3 个难点
- Java开发日常
- 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02
- 一次完整的JVM堆外内存泄漏故障排查记录
- elasticsearch之自定义Java代码的安全策略管理
- Java中的受检异常