既能快速试错,也能稳健扩展
使用 Java 动态代理 API
Java 动态代理 API 允许在运行时创建代理类,该代理类可以拦截对目标对象的调用并执行自定义逻辑。

步骤:
创建目标类:
```java
interface Target {
void doSomething();
}
class RealTarget implements Target {
@Override
public void doSomething() {
System.out.println("RealTarget: doSomething");
}
}
```
创建 InvocationHandler:
InvocationHandler 是一个接口,定义了代理类对方法调用的处理方式。
```java
class LoggingInvocationHandler implements InvocationHandler {
private final Target target;
public LoggingInvocationHandler(Target target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("LoggingInvocationHandler: before " + method.getName());
Object result = method.invoke(target, args);
System.out.println("LoggingInvocationHandler: after " + method.getName());
return result;
}
}
```
创建代理类:
```java
Target target = new RealTarget();
InvocationHandler handler = new LoggingInvocationHandler(target);
Target proxy = (Target) Proxy.newProxyInstance(
target.getClass().getClassLoader(),
new Class[] { Target.class },
handler);
```
4. 使用代理类:
```java
proxy.doSomething();
```
输出:DDOS接单平台
```
LoggingInvocationHandler: before doSomething
RealTarget: doSomething
LoggingInvocationHandler: after doSomething
```
其他注释:
`Proxy.newProxyInstance()` 方法返回一个实现给定接口的新代理实例。
代理类是基于反射实现的,这意味着它的效率可能低于直接调用目标类。
动态代理在调试、日志记录和安全等场景中很有用。