代理模式之强制代理模式以及动态代理原理

本文介绍了代理模式中的强制代理模式和动态代理模式。强制代理模式中,真实角色管理其代理角色,必须通过真实角色获取代理。动态代理模式则在运行时指定代理对象,如AOP中的核心机制,通过InvocationHandler实现对真实角色的代理。文中通过官员和秘书的比喻详细解释了这两种代理模式的工作原理,并提供了代码示例。
摘要由CSDN通过智能技术生成

 

1:强制代理模式

         普通代理模式和强制代理模式是代理模式的其中俩个部分。对于这俩个代理模式,我们采用一个类似事情解释下:

在网络上的代理服务器分透明代理和普通代理;对于透明代理来说,字如其意,就是这个代理服务器对用户来说是透明的,用户根本不知道这个服务器的存在。而普通代理则是用户需要自己手动去设置代理服务器的ip,很显然,对于这点上,用户必须知道代理服务器的存在。现在对号入座:代理模式中的强制代理类似网络上的代理服务器的透明代理,代理模式中的普通代理模式就类似网络上的代理服务器的普通代理。

普通代理模式比较常见,在这里就不作多说了,那么在这里就重点来看看强制代理模式。

 

        强制代理模式在设计模式中比较怪怪的,很另类。一般的思维都是通过代理模式找到真实的角色,但是强制代理模式反其道而行之,必须强制通过真实角色去查找到到模式,否则不能访问。换句话说就是有真实角色去管理代理角色。总而言之:就是通过new或者其他方式创建一个真实角色的对象,最后却是会有真实角色返回他自己的代理角色。类似日常生活中:哥们咱想通过给点钱给某某局长,让他出面给咱们半个事情,结果他给我们一张他秘书的名片(理由很简单,这种事情当老大的不会出面),让他们本想通过局长要做的事情,直接通过秘书去做。其实:秘书能做这些,也就是此局长的权势;说白了秘书就是该局长的替身,代理。上图:

 

在接口上设置一个getProxy()方法,真实角色就能可以指定一个自己的代理。除了代理,谁也不能访问。很显然,当官的人都是会让指定的亲信做事,其他人信不过,当然不能胜任此事。上代码:局长抑或秘书至少都是官员

 

 

 

 

真实角色和代理角色都应该实现上面的基类。

 

真实角色,增加一个私有方法,检查是否为自己的代理,如果是自己的代理,才能执行自己的方法。接下来看看代替实现:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值