您的位置:首页 > 其它

动态代理 简单实例二

2013-12-20 01:08 288 查看
public interface SomeMethods {
void boring1();
void boring2();
void interesting(String arg);
void boring3();
}


public class Implementation implements SomeMethods {

public void boring1() {
System.out.println("boring1");
}

public void boring2() {
System.out.println("boring2");
}

public void boring3() {
System.out.println("boring3");
}

public void interesting(String arg) {
System.out.println("interesting("+arg+")");
}

}


public class MethodSelector implements InvocationHandler {

private Object proxied;

public MethodSelector(Object proxied) {
this.proxied = proxied;
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if(method.getName().equals("interesting")){
System.out.println("Proxy detected the interesting method");
}
return method.invoke(this.proxied, args);
}

}


public class SelectingMethods {
public static void main(String[] args) {
SomeMethods proxy = (SomeMethods)Proxy.newProxyInstance
(SomeMethods.class.getClassLoader(),
new Class[]{SomeMethods.class},
new MethodSelector( new Implementation() ));

proxy.boring1();
proxy.boring2();
proxy.boring3();
proxy.interesting("bonobo");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: