在Java中,代理模式可以通过创建一个代理类来实现。代理类与被代理类实现相同的接口,并持有一个对被代理类的引用。通过代理类的方法调用,可以在调用之前或之后添加额外的逻辑或功能。
下面是一个简单的例子来说明代理模式在Java中的实现:
// 定义一个接口
interface Subject {
void doSomething();
}
// 创建被代理类
class RealSubject implements Subject {
@Override
public void doSomething() {
System.out.println("RealSubject is doing something.");
}
}
// 创建代理类
class Proxy implements Subject {
private RealSubject realSubject;
public Proxy() {
this.realSubject = new RealSubject();
}
@Override
public void doSomething() {
System.out.println("Before doing something.");
realSubject.doSomething();
System.out.println("After doing something.");
}
}
// 使用代理类
public class ProxyPatternDemo {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.doSomething();
}
}
在上面的例子中,RealSubject
是被代理类,Proxy
是代理类。代理类实现了Subject
接口,并持有RealSubject
的引用。在代理类的doSomething
方法中,可以在调用RealSubject
的doSomething
方法之前或之后添加额外的逻辑。
通过使用代理模式,可以实现对被代理类的访问控制、延迟加载、缓存等功能。