静态代理模式示例
定义接口
笔者首先定义了一个接口 Operation
,该接口声明了一个 perform
方法,用于执行具体操作。
public interface Operation {
void perform();
}
实现真实操作类
接下来,笔者创建了一个实现 Operation
接口的类 RealOperation
,在 perform
方法中实现了具体的操作逻辑。
public class RealOperation implements Operation {
@Override
public void perform() {
System.out.println("正在执行操作...");
}
}
创建代理操作类
笔者进一步创建了一个同样实现 Operation
接口的代理类 ProxyOperation
。该代理类持有一个 RealOperation
的实例,通过构造方法将真实操作对象传入。在 perform
方法中,代理类在调用真实操作前后添加了额外的操作。
public class ProxyOperation implements Operation {
private RealOperation realOperation;
public ProxyOperation(RealOperation realOperation) {
this.realOperation = realOperation;
}
@Override
public void perform() {
System.out.println("代理操作:操作执行前...");
realOperation.perform();
System.out.println("代理操作:操作执行后...");
}
}
使用代理对象
最后,笔者在 Main
类中演示了如何使用代理对象。通过代理对象调用 perform
方法,可以在不影响真实对象内部逻辑的情况下,添加额外的操作。
public class Main {
public static void main(String[] args) {
RealOperation realOperation = new RealOperation();
ProxyOperation proxyOperation = new ProxyOperation(realOperation);
proxyOperation.perform();
}
}
代码仓库
完整代码可访问以下链接:Java-Learning/src/com/DesignPattern/static_proxy at main · sumingcheng/Java-Learning
注意事项
在使用静态代理模式时,确保代理类和真实类实现相同的接口,这样代理对象才能透明地替代真实对象。此外,代理类可以在不修改真实类代码的情况下,灵活地添加额外的功能,如日志记录、权限检查等。