六、适配器模式

  • 目的 : 将一个类的接口转换成客户期望的另一个接口。使得原本接口不兼容的类可以一起工作。
  • 核心 : 适配器类包装被适配者,实现目标接口,并在内部调用被适配者的方法进行转换。
  • 场景 : 常用于系统集成,如将第三方库或旧系统接口转换为当前系统所需格式,实现不同接口间的兼容。

首先有一个客户端期望实现的方法

java 复制代码
package adapter;

public interface IDrawCircle {
	void drawCircle();		// 定义客户端期望的圆形绘制方法
}

然后是被适配者

java 复制代码
package adapter;

// 被适配者:现有的矩形绘制类
public class DrawRectangle {
	public void drawRectangle(String msg){
		System.out.println("绘制矩形: " + msg);
	}
}

最后是适配器

java 复制代码
package adapter;
/*
 * 对象适配器:将DrawRectangle适配为IDrawCircle接口
 * 采用组合方式实现适配器模式(适配器和被适配者的生命周期是一样的)
 */
public class DrawAdapter4Object implements IDrawCircle {

	private DrawRectangle drawRectangle;	 	// 持有被适配对象的引用

    public DrawAdapter4Object(DrawRectangle drawRectangle) {
        this.drawRectangle = drawRectangle;		// 注入被适配对象
    }

	@Override
	public void drawCircle() {
        // 第一步:使用矩形绘制功能绘制圆形外接矩形
        drawRectangle.drawRectangle("绘制圆形外接矩形");

        // 第二步:进行额外处理,将矩形转换为圆形
        System.out.println("通过裁剪,将矩形转换为圆形");
	}
}

主函数入口

java 复制代码
package adapter;

public class MainTest{
	public static void main(String[] args) {
		// 创建对象适配器,将DrawRectangle适配为IDrawCircle
		DrawAdapter4Object objAdapter = new DrawAdapter4Object(new DrawRectangle());

		// 客户端调用期望的接口方法
		objAdapter.drawCircle();
	}
}
相关推荐
秋饼4 分钟前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发
心若自由何处是束缚2 小时前
适配器模式:从原理到实战的完整指南
设计模式·适配器模式
文丑颜不良啊2 小时前
LeetCode2161~2180题目解析
java·leetcode
文丑颜不良啊4 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发4 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
天天被压力4 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力4 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A5 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵5 小时前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
nice_lcj5205 小时前
Java 并发容器入门:ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列
java·面试·并发编程·阻塞队列·concurrenthashmap·copyonwritearraylist