设计模式——静态代理
2018-11-07 15:52
197 查看
AOP的核心实现机制
通过代理,控制对对象的访问!核心业务自己做,其他统一的流程代码交给代理类处理!
就是通过proxy持有realObject的引用,并进行一层封装。
静态代理:
应用场景:
1.安全代理:屏蔽对真是角色的直接访问
2.远程加载:通过代理类处理远程方法调用
3.延迟加载:现价在轻量级的代理对象,真正需要时再加载真实对象。(比如要开发一个大文档查看软件,大文档中有大图片,在打开文件时不可能将所有的图片都显示出来,此时使用代理模式,当需要查看图片时,再用Proxy进行大图片的打开。)
背景:客户邀请某巨星在**典礼上表演一段!!!!!
[code]public interface Superstar { /** * 表演 */ void perform(); } /** * 真正的巨星类,会表演 */ public class Authentic implements Superstar { @Override public void perform() { System.out.println("Authentic perform"); } } /** * 巨星的经纪人陪同巨星一起去表演 * 他的表演不是真正的表演而是 * 在巨星表演之前,签合同 * 看巨星表演 * 在巨星表演之后,结算出场费 */ public class Proxy implements Superstar{ Superstar superstar; public Proxy(Superstar superstar) { this.superstar = superstar; } @Override public void perform() { System.out.println("帮助巨星签合同"); superstar.perform(); System.out.println("帮助巨星结算演出费"); } } /** * 客户邀请某巨星出席 * 只需要联系他的经纪人 */ public class Client { public static void main(String[] args) { Superstar authentic = new Authentic(); Superstar proxy = new Proxy(authentic); proxy.perform(); } }
好处就是!!!
扩展原功能,不用修改原来的代码!
局限性:一个经纪人手下有多个明星。如果此时仍使用静态代理,可以通过以下方法实现功能。
1.一个明星用一个proxy ,创建多个代理类 -------------------------------------导致proxy膨胀
2.通过创建一个proxy,持有不同的真实角色,同时实现Action1、Action2、Action3接口---------------------------一个类依赖太多接口
-
-
-
-
-
-
----------------------------下一章------用动态代理来解决!!!!
阅读更多
相关文章推荐
- GOF23设计模式之静态代理模式实现之经典
- JAVA设计模式-10-代理模式(静态)
- 设计模式-静态代理模式
- 架构设计之设计模式 (二) 静态代理和动态代理--间接“美”
- 设计模式——静态代理模式
- 设计模式 --代理模式--静态代理
- 设计模式(代理模式--静态代理)
- 设计模式----代理模式(Proxy)(静态代理模式)
- Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理
- 设计模式之静态代理设计模式
- 设计模式(一) 静态代理
- java设计模式----静态代理
- 【GOF23设计模式】_代理模式_静态代理_动态代理_开发场景JAVA236-237
- java设计模式---静态代理(简单笔记)
- (7)设计模式之代理模式(结构型模式)-静态代理
- 设计模式- 代理模式 (静态代理 和 动态代理)
- 设计模式01-代理模式(静态代理)
- 代理模式(Proxy Pattern):静态代理 - 最易懂的设计模式解析
- JAVA设计模式之静态代理
- 设计模式-静态代理模式