控制对对象的访问——代理模式详解(静态代理和动态代理的区别以及联系)
目录 1. 前言 2. 代理模式详解 2.1 定义 2.2 普通代理模式类结构 2.3 普通代理模式的实现(静态代理) 3. JDK动态代理详解 3.1 JDK动态代理实现 3.2 方法调用流程图 3.3 动态代理和静态代理的区别 3.4 其他实现动态代理的方式 4. 总结 1. 前言 代理模式可以说是生活中处处可见。比如说在携程上定火车票,携程在这里就起到了一个代理的作用,比起我们在官网上或者直接去柜台订票,携程可以为用户提供更多人性化的选择。再比如代购,我自己的mbp就是委托别人从香港买回来的,那么那个代购人就相当于代理,免去了我来回的车费以及办签证的麻烦。直观的理解,代理是这么一个对象,我们可以把工作委托给它,由它帮我们去执行工作同时解决工作相关的各种麻烦,最后把工作成果交给我们。这样一来我们只需要关注问题的核心,并告知代理,而不需要为其他琐碎的细节操心,这正是代理模式最大的好处,让客户端专注于真正的事务处理。具体而言,代理模式分为静态代理和动态代理,它们的设计思想类似,实现却大相径庭。它们的实现方式以及它们的区别是面试时经常会被问到的。下面我们就来详细介绍它们。 2. 代理模式详解 2.1 定义 为另一个对象提供一个替身或占位符以控制对这个对象的访问 定义简单明了。但还是有些没有解释清楚的地方,控制对对象的访问是为了干什么?其实是为了对真实的业务方法作某种形式的增强