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

Posted 白瑕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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设计模式初探-代理模式(三) 虚拟代理
内容有点少, 还没有遇到实战情况.

以上是关于JavaScipt设计模式初探-代理模式 保护代理的主要内容,如果未能解决你的问题,请参考以下文章

JavaScipt设计模式初探-代理模式 虚拟代理

从王者荣耀看设计模式(保护代理模式)

Java动态代理模式 -- 保护代理

JavaScript设计模式中代理模式的使用方法

保护代理模式-Access Proxy(Java实现)

你不想干我帮你——代理模式