JavaScipt设计模式初探-代理模式(二) 保护代理


前言

保护代理可以基于筛选条件, 控制抽象对象对真实对象的访问, 藉此真实抽象对象.

比如老板忙, 找了个HR替他招人, HR招个连环鲨人犯进来大伙就危险了, 所以HR要筛查一下.
这也是一种代理模式(Proxy), 在这个过程中HR即是代理对象, 保护代理模式下代理还额外负责筛选保护(即筛选求职者), 公司员工则是被保护的真实对象, 而求职者是抽象对象.

我认为这是一种在代理模式的基础上进行的业务扩展, 代理, 顺带帮忙保护.


一、示例说明

我觉得…这个雀食还是看代码来的高效一些.
我们就还是用求职的例子:

function Company_reaObj() {       //公司_真实对象
  const join = function () {      //入职函数
    return "Join The Company.";
  }
  return { join };
}

function HRProxy(seeker) {        //HR_代理对象
  this.seeker = seeker;
  
    const interview = function () {   //面试函数
      return (this.seeker.murderer === true) ? "sorry, i cant." : Company_AbsObj().join();
    }
    
    const res = interview();
    return res;
}

console.log(HRProxy({ name: "baiX", murderer: false }));

面试函数在起到代理作用的同时兼顾了保护, 筛除掉求职者中的murderer, 如果求职者的murderer属性为false, 则允许调用入职函数.

从代理模式特点方面来说, 代理对象与真实对象应当具有相同行为.
试想一下我是一个代理商, 我代理我的上级卖羊头, 上级前脚刚走我换了个牌子开始卖狗肉(我自己弄一个方法一个新行为), 他那羊头我也不管了反正都是赚钱(也都能达到目的), 这还能叫代理关系吗.

所以HRProxy在筛查后将求职者招入时选择了调用真实对象Company_AbsObjjoin方法, 而非自己在代理对象中定义新的方法, 即是为了满足该条.


总结

上一篇: JavaScipt设计模式初探-代理模式(一)
下一篇: JavaScipt设计模式初探-代理模式(三) 虚拟代理
内容有点少, 还没有遇到实战情况.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值