package cn.lnu.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; //���������ר�Ų�������Ĵ���,���ض���ʵҵ�����(����)��ֱ�ӷ��� public class LiyuchunProxy {//�����࣬���ڲ���chunchun���� private Person chunchun=new Liyuchun();//���ڼ�ס�Dz���Liyuchun�Ĵ��� //Demo----->Person person=LiyuchunProxy.createProxy(); person.sing(); person.dance() public Person createProxy(){ //newProxyInstance�����ĵڶ���������һ���ӿڣ�����ʹ��chunchun�������Ľӿڴ��������Ĵ�����һ��������һ���������������������ʹ�ñ������������������������������������ָ����������������ʲô���� //ʵ�ʿ����У�ʹ���������������ij������Ĵ�����󣬲���������invoke������ʵ��������� return (Person) Proxy.newProxyInstance(LiyuchunProxy.class.getClassLoader(), chunchun.getClass().getInterfaces(), new InvocationHandler(){ //������ָ�������Ĵ����ʲô����,�������ʵҵ����������ͬ����Ϊ /* * proxy���Ѵ�����������ݽ������������person����this���������һ���û����� * method������ǰ���õķ��� * args�����÷����IJ��� * * �����洴���Ĵ���person��sing����dance����ʵ���϶��ǵ������invoke����,������ز������ݸ�invoke���� * */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodname=method.getName();//������洴���Ĵ���person���õķ��� if(methodname.equals("sing")){//���������ڲ����������ʵ�������˶Դ���(��ʵҵ�����)��ֱ�ӷ��ʣ�Ȼ����Ǯ����֪ͨ���糪������ System.out.println("��һ���������Ȼ���Ӳ����裡"); //����֮�󣬸��ߴ���ȥ���裬������������󴫵ݽ����������������´� return method.invoke(chunchun, args);//����ֵлл���ظ�������÷����Ĵ����� }else if(methodname.equals("dance")){ System.out.println("�������������Ȼ���Ӳ����裡"); return method.invoke(chunchun, args);//����ֵ������ }else{ System.out.println("���粻֧��������ܣ�"); } return null; } }); } }