美文网首页
6.设计模式之代理模式

6.设计模式之代理模式

作者: W北落师门W | 来源:发表于2021-01-22 13:01 被阅读0次

代理模式:为其他对象提供一种代理以控制对这个对象的访问

当我第一次看到代理模式的定义是,脑海中浮现的一句代码就是const that = this;,我们通过that来代理this的访问,虽然没有体现控制的意味,但体现了代理的意思。

在日常的开发工作之中,我对于代理模式的理解是:对对象的操作添加过滤的手段

之前在工作中遇到一个场景:平台管理系统需要去维护各子系统的公共数据(CommonData),各子系统在使用时去拉取公共数据,但是这样拉取公共数据其实会是比较大的开销,因为公共数据的变化比较缓慢,时效性比较低,我们可以通过代理拉取公共数据的函数来操作。代码如下:

// 拉取公共数据函数
const getCommonData = async (type) => {
    return await Ajax(type);
};

// 代理函数
const CommonDataMap = new Map();
const getCommonDataProxy = async (type) => {
    let data = CommonDataMap.get(type);
    if (!data) {
        data = await getCommonData(type);
        CommonDataMap.set(type, data);
    }

    return data;
};

使用场景

  1. 远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在不同地址空间的事实
  2. 虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象
  3. 安全代理:用来控制,真实对象访问时的权限
  4. 智能指引:值当调用真实的对象时,代理处理另外一些事情

我的经验

在前端中,我遇到或使用代理模式的场景有:

  • 需要对某些类、方法的使用做一层过滤
  • 需要监听某些类、方法的使用并做处理
  • 某些DOM懒加载的情况(比如图片懒加载)

参考

大话设计模式 -- 程杰

个人博客

北落师门

相关文章

  • 6.设计模式之代理模式

    代理模式:为其他对象提供一种代理以控制对这个对象的访问 当我第一次看到代理模式的定义是,脑海中浮现的一句代码就是c...

  • 设计模式之代理模式

    设计模式之代理模式 10分钟看懂动态代理设计模式(升级篇)-对这篇动态代理模式的思路整理 仿JDK实现动态代理逻辑...

  • 常用设计模式

    6.设计模式1> 常用的设计模式代理 观察者 工厂 单例 策略2> 代理属性的内存策略是什么,为什么?3...

  • 代理模式

    设计模式之代理模式 什么是代理模式? 指的事代理对象为其他对象提供代理以控制对被...

  • iOS中都有什么设计模式?

    1.代理模式 2.观察者模式 3.MVC模式 4.单例模式 5.策略模式 6.工厂模式 二 各个设计模式的作用? ...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

  • iOS中都有什么设计模式?各个设计模式的作用?

    一 iOS中都有什么设计模式? 1.代理模式 2.观察者模式 3.MVC模式 4.单例模式 5.策略模式 6.工厂...

  • iOS中都有什么设计模式?各个设计模式的作用?

    一 iOS中都有什么设计模式? 1.代理模式 2.观察者模式 3.MVC模式 4.单例模式 5.策略模式 6.工...

  • 设计模式之代理模式2

    设计模式之代理模式运用 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对...

网友评论

      本文标题:6.设计模式之代理模式

      本文链接:https://www.haomeiwen.com/subject/eipszktx.html