代理模式(Proxy Pattern)是Java开发中常用的设计模式之一,属于结构型设计模式,它提供了一个代理对象
来控制对其他对象的访问。代理对象充当客户端与真实对象之间的中介
,可以在访问真实对象之前或之后
执行一些额外的操作,下面用Java代码来看看它的用法吧。
// 主题接口
interface Subject {
void request();
}
// 真实主题类
class RealSubject implements Subject {
@Override
public void request() {
System.out.println("真实主题类");
}
}
// 代理类
class Proxy implements Subject {
private RealSubject realSubject;
public Proxy() {
this.realSubject = new RealSubject();
}
@Override
public void request() {
System.out.println("方法调用前日志输出");
realSubject.request();
System.out.println("方法调用后日志输出");
}
}
// 测试代码
public class ProxyPatternExample {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
优点:
- 代理模式可以
控制对真实对象的访问
,可以在访问前后
进行一些额外操作,如权限控制、日志记录等。 - 可以
避免直接访问真实对象
,保护真实对象的安全性。
缺点:
- 增加了系统的复杂度,引入了
额外的代理类
。 - 可能会降低系统的性能,因为每次访问都需要经过代理。
使用场景:
- 当需要
控制对对象的访问
,并在访问前后执行额外操作时,可以使用代理模式。 - 当需要在访问对象时
添加一些额外功能
,但又不希望修改原始对象的代码时,可以考虑使用代理模式。