版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hardworking0323/article/details/81606403
一、概述
代理模式
为其他对象提供一种代理以控制对这个对象的使用
比如人力外包 公司想招聘人干活,但又不想管理代理对象去除无须了解的服务,实现客户与目标对象之间的关联
二、结构
- 1、抽象主题角色:subject,声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替
- 2、代理主题角色:proxySubject,含真主题的引用,从而可以在任何时候操作真实主题对象代理主题角色提供和真实主题相同同的接口,使它可以随时代理真实主题,代理主题通过真实主题的引用不仅可以控制真实主题的创建和删除,还可以在真实主题被调用前进行拦截,或在调用后进行某些操作
- 3、真实代理对象,relSubject,定义了代理角色所代表的具体对象
三、优势
- 1、运用中介的方式,关联调用方与被调用方,有利于减轻系统的藕合度
- 2、无须修改现有代码,即可对需要的一个对象进行控制与访问
基于此,我认为可以在以下几种情形下采用代理模式进行软件设计与实施
- 1、调用程序的原有方法,其已有方法需要修改或优化时
- 2、客户端的访问权限受到限制,其用户的权限需要验证时
- 3、计算程序复杂,运算的时间较长,并且在计算进程中需要展现中间的运算结果时
应用场景
SpringAop中使用