java 代理模式代码
时间: 2023-11-25 18:06:16 浏览: 69
代理模式代码
当然可以!以下是一个简单的Java代理模式的示例代码:
```java
// 定义一个接口
interface Image {
void display();
}
// 具体实现类
class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadFromDisk();
}
private void loadFromDisk() {
System.out.println("Loading image: " + filename);
}
public void display() {
System.out.println("Displaying image: " + filename);
}
}
// 代理类
class ImageProxy implements Image {
private String filename;
private RealImage realImage;
public ImageProxy(String filename) {
this.filename = filename;
}
public void display() {
if (realImage == null) {
realImage = new RealImage(filename);
}
realImage.display();
}
}
// 使用示例
public class ProxyPatternExample {
public static void main(String[] args) {
// 创建代理对象
Image image = new ImageProxy("test.jpg");
// 第一次调用display方法,会加载和显示真实对象
image.display();
// 第二次调用display方法,直接显示真实对象,不再加载
image.display();
}
}
```
这个例子中,`Image`接口定义了一个`display()`方法用于显示图像。`RealImage`是实现了`Image`接口的具体类,负责加载和显示真实的图像。`ImageProxy`是代理类,它持有一个`RealImage`对象,并在需要的时候创建和调用真实对象。
在示例的`main()`方法中,首次调用`image.display()`时,代理对象`ImageProxy`会创建并调用真实对象`RealImage`的`display()`方法,加载和显示图像。第二次调用`image.display()`时,代理对象直接调用真实对象的`display()`方法,不再加载图像。
这就是一个简单的Java代理模式的实现。希望能帮到你!如果有任何问题,请随时提问。
阅读全文