package cn.fly.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyTest {
public static void main(String[] args) {
Lenovo lenovo = new Lenovo();
SaleComputer proxy_lenovo = (SaleComputer) Proxy.newProxyInstance(lenovo.getClass().getClassLoader(), lenovo.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("该方法执行了");
if(method.getName().equals("sale")){
double money = (double) args[0];
money = money * 0.85;
String obj = (String) method.invoke(lenovo, money);
return obj +"和鼠标垫";
}
return method.invoke(lenovo,args);
}
});
String computer = proxy_lenovo.sale(8000);
System.out.println(computer);
}
}
package cn.fly.proxy;
public interface SaleComputer {
public String sale(double money);
public void show();
}
package cn.fly.proxy;
public class Lenovo implements SaleComputer{
@Override
public String sale(double money) {
System.out.println("花了"+money+"源买了一台联想电脑");
return "联想电脑";
}
@Override
public void show() {
System.out.println("展示电脑");
}
}