java 适配器模式 实例
时间: 2023-10-14 07:06:02 浏览: 52
适配器模式是一种结构型设计模式,它将一个接口转换成另一个客户端所期望的接口。适配器模式通常用于将一个老的系统或接口与新的系统或接口进行链接。
以下是一个 java 适配器模式的实例:
假设我们有一个已经存在的类,它有一个方法 `draw()`,但我们希望在这个类的基础上创建一个新的类,这个新类也有一个 `draw()` 方法,但是它需要接受一个参数,而原来的类不支持这个参数。为了使用原来的类并满足新的需求,我们可以使用适配器模式。
首先,我们创建一个已经存在的类 `OldDrawing`:
```java
public class OldDrawing {
public void draw() {
System.out.println("Drawing...");
}
}
```
然后,我们创建一个需要接受参数的新类 `NewDrawing`:
```java
public interface NewDrawing {
void draw(int x, int y);
}
```
现在我们需要一个适配器,这个适配器将 `OldDrawing` 类转换成 `NewDrawing` 接口。我们可以创建一个名为 `DrawingAdapter` 的适配器:
```java
public class DrawingAdapter implements NewDrawing {
private OldDrawing oldDrawing = new OldDrawing();
@Override
public void draw(int x, int y) {
oldDrawing.draw();
}
}
```
在上面的代码中,我们将 `OldDrawing` 类的实例作为适配器的成员变量,并实现了 `NewDrawing` 接口。在 `draw()` 方法中,我们调用了 `OldDrawing` 类的 `draw()` 方法。
现在我们可以使用 `DrawingAdapter` 类来创建一个 `NewDrawing` 类的实例,并调用它的 `draw()` 方法:
```java
public class Main {
public static void main(String[] args) {
NewDrawing newDrawing = new DrawingAdapter();
newDrawing.draw(10, 20);
}
}
```
在上面的代码中,我们创建了 `DrawingAdapter` 类的实例,并将其赋值给一个 `NewDrawing` 类的变量。然后我们调用了 `draw()` 方法,并传递了两个参数。
这就是适配器模式的一个简单实例。通过适配器模式,我们可以连接已经存在的类和新的接口,使它们可以一起工作,而不需要修改已经存在的代码。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)