什么是代理模式,请写一段代码并详细介绍
时间: 2023-03-30 09:04:39 浏览: 77
代理模式是一种结构型设计模式,它允许你提供一个代替另一个对象的替代品,以控制对该对象的访问。代理对象通常充当客户端和实际对象之间的中介,以隐藏实际对象的复杂性。
下面是一个简单的代理模式的示例代码:
```
// 定义一个接口
interface Subject {
void request();
}
// 实际对象
class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
// 代理对象
class Proxy implements Subject {
private RealSubject realSubject;
public void request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
preRequest();
realSubject.request();
postRequest();
}
private void preRequest() {
System.out.println("Proxy: Preparing request.");
}
private void postRequest() {
System.out.println("Proxy: Finishing request.");
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
```
在上面的代码中,我们定义了一个接口 `Subject`,它有一个方法 `request`。然后我们实现了一个实际对象 `RealSubject`,它实现了 `Subject` 接口。接着我们定义了一个代理对象 `Proxy`,它也实现了 `Subject` 接口。在 `Proxy` 中,我们维护了一个实际对象 `RealSubject` 的引用,并在 `request` 方法中调用了实际对象的 `request` 方法。在 `request` 方法中,我们还添加了一些前置和后置处理逻辑。
最后,在客户端中,我们创建了一个代理对象 `Proxy`,并调用了它的 `request` 方法。这样,我们就可以通过代理对象来控制对实际对象的访问了。