动态代理 简单实例二

来源:互联网 发布:淘宝药店货到付款 编辑:程序博客网 时间:2024/05/21 16:29
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");}}


0 0
原创粉丝点击