手机
当前位置:查字典教程网 >编程开发 >Java >轻松掌握Java代理模式
轻松掌握Java代理模式
摘要:定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象...

定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

特点:

1、真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。

2、代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。

3、扩展性高

企业级开发和常用框架中的应用:最著名的就是spring的aop,还有spring的bean的创建其实也用到了代理

代理模式分为了动态代理和静态代理,动态代理是开发中应用的特别多。

静态代理:

/** * 以买房举例 */ interface Actions { /** * 选房 */ public void selectHouse(); /** * 看房 */ public void seeHouse(); /** * 入住 */ public void ruzhu(); } class RealRole implements Actions{ public void selectHouse() { System.out.println("用户自己选房"); } public void seeHouse() { System.out.println("用户自己看房"); } public void ruzhu() { System.out.println("用户自己入住"); } } class ProxyRole implements Actions{ private RealRole realRole; public ProxyRole(RealRole realRole) { this.realRole = realRole; } public void selectHouse() { System.out.println("中介选房"); } public void seeHouse() { System.out.println("中介看房"); } @Override public void ruzhu() { realRole.ruzhu(); } } public class Demo { public static void main(String[] args) { RealRole realRole = new RealRole(); ProxyRole proxyRole = new ProxyRole(realRole); proxyRole.selectHouse(); proxyRole.seeHouse(); proxyRole.ruzhu(); } }

动态代理:

/** * 以买房举例 */ interface Actions { /** * 选房 */ public void selectHouse(); /** * 看房 */ public void seeHouse(); /** * 入住 */ public void ruzhu(); } class RealRole implements Actions{ public void selectHouse() { System.out.println("用户自己选房"); } public void seeHouse() { System.out.println("用户自己看房"); } public void ruzhu() { System.out.println("用户自己入住"); } } class Handler implements InvocationHandler{ private RealRole realRole ; public Handler(RealRole realRole) { this.realRole = realRole; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(realRole); System.out.println("中介选房,看房"); method.invoke(realRole, args); return null; } } public class Demo { public static void main(String[] args) { RealRole realRole = new RealRole(); Handler handler = new Handler(realRole); Actions proxy = (Actions) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Actions.class}, handler); proxy.ruzhu(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持查字典教程网。

【轻松掌握Java代理模式】相关文章:

java生成压缩文件示例代码

Java事务的个人理解小结

Java代码重构的几种模式详解

深入解析java中的静态代理与动态代理

java单例模式学习示例

在Struts2中的结果集类型

java多线程详细总结

Java在Linux下 不能处理图形的解决办法 分享

深入XPath的详解以及Java示例代码分析

Java join 线程控制用法

精品推荐
分类导航