代理模式之静态代理
一、概述
代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能的特点也为多人所用。
二、图形描述
三、静态代理
静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护一个代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法,并实现前拦截,后拦截等所需的业务功能。
/** * 目标对象实现的接口 * @author aaron */ public interface BussinessInterface { void execute(); } /** * 目标对象实现类 * @author aaron */ public class Bussiness implements BussinessInterface{ @Override public void execute() { System.out.println("执行业务逻辑..."); } } /** * 代理类,通过实现与目标对象相同的接口 * 并维护一个代理对象,通过构造器传入实际目标对象并赋值 * 执行代理对象实现的接口方法,实现对目标对象实现的干预 * @author aaron */ public class BussinessProxy implements BussinessInterface{ private BussinessInterface bussinessImpl; public BussinessProxy(BussinessInterface bussinessImpl) { this.bussinessImpl = bussinessImpl; } @Override public void execute() { System.out.println("前拦截..."); bussinessImpl.execute(); System.out.println("后拦截..."); } }
静态代理的总结
优点:可以做到不对目标对象进行修改的前提下,对目标对象进行功能的扩展和拦截。
缺点:因为代理对象,需要实现与目标对象一样的接口,会导致代理类十分繁多,不易维护,同时一旦接口增加方法,则目标对象和代理类都需要维护
作者:诗和远方
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步