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