- 创建一个接口
package com.itheima.proxy;
public interface Waiter {
public void server();
public String sayHello(String name);
}
- 创建一个类来实现这个接口
package com.itheima.proxy;
public class Waitress implements Waiter {
@Override
public void server() {
System.out.println("服务中......");
}
@Override
public String sayHello(String name) {
return "Hello" + name;
}
}
- 采用动态代理的方式对这个类进行增强并且调用方法
package com.itheima.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.junit.Test;
public class ProxyDemo1 {
@Test
public void demo1(){
Waiter waiter = new Waitress();
ClassLoader classLoader = waiter.getClass().getClassLoader();
Class[] interfaces = waiter.getClass().getInterfaces();
Waiter waiter2 = (Waiter)Proxy.newProxyInstance(classLoader, interfaces, new MyInvocationHandler(waiter) );
String s = waiter2.sayHello("李四");
System.out.println(s);
}
}
class MyInvocationHandler implements InvocationHandler{
private Waiter waiter;
public MyInvocationHandler(Waiter waiter){
this.waiter = waiter;
}
@Override
public Object invoke(Object proxy, Method method, Object[] params)
throws Throwable {
Object obj = method.invoke(waiter, params);
return obj;
}
}