静态代理:
1、被代理类接口
package agent.pakstatic; public interface SendServer { void sendEmail(); }
讯享网
2、被代理类(业务接口实现类)
讯享网package agent.pakstatic; public class SendEmail implements SendServer{ @Override public void sendEmail() { System.out.println("发送邮件成功!"); } }
3、代理类
package agent.pakstatic; public class SendEmail implements SendServer{ private final SendServer sendServer = new SendEmail(); @Override public void sendEmail() { System.out.println("发送邮件。。。"); sendServer.sendEmail(); System.out.println("发送邮件。。。成功!"); } }
4、main主函数测试类
讯享网package agent.pakstatic; public class Main { public static void main(String[] args) { new SendEmail().sendEmail(); } }
运行结果:
动态代理:
1、被代理类接口
package agent.dynamic; public interface PayServer { void payMoney(); }
2、接口实现类(被代理类)
讯享网package agent.dynamic; public class PayZFB implements PayServer{ @Override public void payMoney() { System.out.println("支付宝付款成功!"); } }
3、动态代理实现类(代理类)
package agent.dynamic; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class ProxyHandler implements InvocationHandler { private Object object; public ProxyHandler(Object object){ this.object = object; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(""+method.getName()); Object invoke = method.invoke(object,args); System.out.println(""+method.getName()); return invoke; } }
4、main主函数测试类
讯享网package agent.dynamic; import agent.pakstatic.SendEmail; import agent.pakstatic.SendServer; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; public class Main { public static void main(String[] args) { SendServer send = new SendEmail(); PayServer pay = new PayZFB(); InvocationHandler sendHandler = new ProxyHandler(send); InvocationHandler payHandler = new ProxyHandler(pay); SendServer sendServer = (SendServer) Proxy.newProxyInstance(send.getClass().getClassLoader(),send.getClass().getInterfaces(),sendHandler); sendServer.sendEmail(); PayServer payServer = (PayServer) Proxy.newProxyInstance(pay.getClass().getClassLoader(),pay.getClass().getInterfaces(),payHandler); payServer.payMoney(); } }
运行结果:



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/22655.html