Java二十三种设计模式-代理模式(8/23)
代理模式是常用的设计模式之一,其定义如下:给某个对象提供一个代理或者占位符,并由代理对象来控制对原对象的访问。
在Java中,代理模式通常包含三个要素:
- 接口(Interface):定义代理类和真实主题类的公共接口,这样就可以在任何使用真实对象的地方使用代理对象。
- 真实主题类(RealSubject):实现接口,定义了代理类所代表的真实对象。
- 代理类(Proxy):也实现了接口,代理对象包含对真实主题对象的引用,并且可以在对真实主题对象的操作前后进行一些处理,比如访问控制和缓存等。
以下是一个简单的代理模式示例:
// 接口
public interface Subject {
void request();
}
// 真实主题类
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("RealSubject is handling the request.");
}
}
// 代理类
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
preRequest();
realSubject.request(); // 调用真实主题的方法
postRequest();
}
private void preRequest() {
System.out.println("Pre-processing before request.");
}
private void postRequest() {
System.out.println("Post-processing after request.");
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Subject proxy = new Proxy();
proxy.request();
}
}
在这个例子中,Proxy
类作为RealSubject
的代理,在调用RealSubject
的request
方法前后进行了预处理和后处理。这样的设计模式在需要增加额外处理的情况下非常有用,比如权限控制、事务管理、日志记录等。
评论已关闭