在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方法之前或之后添加額外的邏輯。
通過使用代理模式,可以實現對被代理類的訪問控制、延遲加載、緩存等功能。