在Java中,代理模式可以通過創(chuàng)建一個代理類來實現(xiàn)。代理類與被代理類實現(xiàn)相同的接口,并持有一個對被代理類的引用。通過代理類的方法調(diào)用,可以在調(diào)用之前或之后添加額外的邏輯或功能。
下面是一個簡單的例子來說明代理模式在Java中的實現(xiàn):
// 定義一個接口
interface Subject {
void doSomething();
}
// 創(chuàng)建被代理類
class RealSubject implements Subject {
@Override
public void doSomething() {
System.out.println("RealSubject is doing something.");
}
}
// 創(chuàng)建代理類
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
是代理類。代理類實現(xiàn)了Subject
接口,并持有RealSubject
的引用。在代理類的doSomething
方法中,可以在調(diào)用RealSubject
的doSomething
方法之前或之后添加額外的邏輯。
通過使用代理模式,可以實現(xiàn)對被代理類的訪問控制、延遲加載、緩存等功能。