parent
5fd59f7ca1
commit
70ed948e92
@ -0,0 +1,45 @@
|
||||
import java.lang.reflect.*;
|
||||
|
||||
// 业务接口
|
||||
interface UserService {
|
||||
String getUser(int id);
|
||||
}
|
||||
|
||||
// 真实业务类
|
||||
class UserServiceImpl implements UserService {
|
||||
public String getUser(int id) {
|
||||
return "User-" + id;
|
||||
}
|
||||
}
|
||||
|
||||
// 动态代理处理器
|
||||
class LoggingProxyHandler implements InvocationHandler {
|
||||
private Object target;
|
||||
|
||||
public LoggingProxyHandler(Object target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
System.out.println("Before method: " + method.getName());
|
||||
Object result = method.invoke(target, args);
|
||||
System.out.println("After method: " + method.getName());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// 客户端使用
|
||||
public class AdvancedDynamicProxy {
|
||||
public static void main(String[] args) {
|
||||
UserService realService = new UserServiceImpl();
|
||||
|
||||
UserService proxyInstance = (UserService) Proxy.newProxyInstance(
|
||||
UserService.class.getClassLoader(),
|
||||
new Class[]{UserService.class},
|
||||
new LoggingProxyHandler(realService)
|
||||
);
|
||||
|
||||
System.out.println(proxyInstance.getUser(101));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue