动态代理 简单实例二

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");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值