JDK实现动态代理步骤如下;
1.现创建代理类接口
public interface SellTickets {
String sell();
}
2.实现接口创建实体类
public class Station implements SellTickets{
@Override
public String sell() {
System.out.println("火车站卖票");
return "买票成功";
}
}
3.实现代理逻辑
public class ProxyFactory {
public Station station=new Station();
public SellTickets getProxyObject(){
SellTickets sellTickets=(SellTickets) Proxy.newProxyInstance(
station.getClass().getClassLoader(),
station.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("代理方法执行!");
System.out.println(method);
Object invoke = method.invoke(station, args);
System.out.println("收取服务费");
return invoke;
}
}
);
return sellTickets;
}
4.测试
public class Cclient {
//创建工厂
public static void main(String[] args) {
ProxyFactory proxyFactory=new ProxyFactory();
SellTickets proxyObject = proxyFactory.getProxyObject();
//返回代理类 代理类自动实现代理接口
String sell = proxyObject.sell();
System.out.println(sell);
}
}