房屋出租案例(实现动态代理)
(InvocationHandler接口:调用处理程序)
(Proxy类:生成代理)
1.房东
package com.lit.demo;
public interface rent {
public void rent();
}
package com.lit.demo;
public class hots implements rent {
public void rent() {
System.out.println("房东要出租房子!");
}
}
2.中介(代理)
package com.lit.demo;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyInvocation implements InvocationHandler {
private rent rent;
public void setRent(rent rent) {
this.rent = rent;
}
public Object getProxy(){
Object o = Proxy.newProxyInstance(this.getClass().getClassLoader(), rent.getClass().getInterfaces(), this);
return o;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
see();
Object result = method.invoke(rent, args);
fare();
return result;
}
public void see(){
System.out.println("中介带着看房子!");
}
public void fare(){
System.out.println("收租金!");
}
}
3.客户
package com.lit.demo;
public class client {
public static void main(String[] args) {
hots hots = new hots();
ProxyInvocation proxy = new ProxyInvocation();
proxy.setRent(hots);
rent p = (rent) proxy.getProxy();
p.rent();
}
}