如何实现一个简单的Proxy动态代理程序?
时间: 2024-03-07 22:48:19 浏览: 102
用newProxyInstance方式和getProxyClass方式动态代理.zip
实现一个简单的Proxy动态代理程序,可以使用Java中的`Proxy`类和`InvocationHandler`接口。
首先,定义一个接口,该接口是需要被代理的实现类的公共接口。
```java
public interface Hello {
void sayHello(String name);
}
```
然后,实现该接口的实现类。
```java
public class HelloImpl implements Hello {
@Override
public void sayHello(String name) {
System.out.println("Hello, " + name);
}
}
```
接着,定义一个实现`InvocationHandler`接口的代理类。
```java
public class HelloProxy implements InvocationHandler {
private Object target;
public HelloProxy(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;
}
}
```
最后,通过`Proxy`类创建代理对象。
```java
Hello hello = new HelloImpl();
HelloProxy proxy = new HelloProxy(hello);
Hello helloProxy = (Hello) Proxy.newProxyInstance(
hello.getClass().getClassLoader(),
hello.getClass().getInterfaces(),
proxy
);
helloProxy.sayHello("World");
```
运行结果:
```
Before method sayHello
Hello, World
After method sayHello
```
这样就实现了一个简单的Proxy动态代理程序。
阅读全文