功能可實現日誌操作,監聽操作......
1.接口類
package cn.jzy.proxy;
public interface IHello {
public void sayMorning(String msg);
public String sayAfernoon(String msg);
}
2.實現類
package cn.jzy.proxy;
public class HelloImpl implements IHello{
@Override
public void sayMorning(String msg) {
System.out.println("早上好:"+msg);
}
@Override
public String sayAfernoon(String msg) {
//System.out.println("晚上好:"+msg);
return "晚上好"+msg;
}
}
3.代理者
package cn.jzy.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyImpl implements InvocationHandler {
Object obj;
public void setObj(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object returnObj=null;
if ("sayMorning".equals(method.getName())) {
System.out.println("發送消失開始: " + args[0].toString());
returnObj = method.invoke(obj, args);
System.out.println("發送消失結束:");
} else if ("sayAfernoon".equals(method.getName())) {
System.out.println("發送消失開始: " + args[0].toString());
returnObj = "沒空理你!";
}
return returnObj;
}
}
4.運行類
package cn.jzy.proxy;
import java.lang.reflect.Proxy;
public class TestPoxy {
public static void main(String[] args){
HelloImpl h=new HelloImpl();
ProxyImpl proxy=new ProxyImpl();
proxy.setObj(h);
IHello fakeH=(IHello)Proxy.newProxyInstance(h.getClass().getClassLoader(), new Class[] {IHello.class}, proxy);
fakeH.sayMorning("張三");
System.out.println(fakeH.sayAfernoon("李四"));
}
}