JS代理模式

作者: ThomasCho | 来源:发表于2018-06-09 10:41 被阅读138次

代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景。比如,明星都有经纪人作为代理。如果想请明星来办一场商业演出,只能联系他的经纪人。经纪人会把商业演出的细节和报酬都谈好之后,再把合同交给明星签。

代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个替身对象来控制对这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理之后,再把请求转交给本体对象。

下面用一个故事、一段代码简单演示代理模式
原本:追慕者小明-->送花-->心上人A
代理:追慕者小明-->送花-->跟A相熟的代理B-->心上人A

// 代理模式 好处:
// 1、保护代理:代理B可以帮A过滤掉一些请求
// 2、虚拟代理:把一些开销大的对象,延迟到真正需要它时才创建

class Flower {
    constructor (name) {
        this.name = name
    }
}
// 追慕者小明
let xiaoming = {
    name: '小明',
    sendFlower (target) {
        target.receiveFlower(this.name)
    }
}
// 代理B
let B = {
    receiveFlower (fromWho) {
        // 当然要等A好心情时才送花,也在送花也才创建花
        A.listenGoodMood(() => {
            A.receiveFlower(new Flower(fromWho + '的花'))
        })
    }
}
// 心上人A
let A = {
    receiveFlower (flower) {
        console.log('收到花:' + flower.name)
    },
    listenGoodMood (fn) {
        setTimeout(() => {fn()}, 1000)
    }
}

xiaoming.sendFlower(B)

运行结果:收到花:小明的花

相关文章

  • 2021-11-17 - 学习记录

    适配器模式 - js: 代理模式 - js 组合模式 - js

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • JS代理模式

    代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景。比如,明星都有经纪人作为代理。如果想请明星来办...

  • js 代理模式

    使用者和目标类出现权限和安全问题,无法直接访问,可以使用代理 场景 网页事件代理 jQuery $.proxy ...

  • js代码题

    js对象的深度克隆 js数组去重 js常用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等

  • JS设计模式-代理模式

    虚拟代理 虚拟代理是把一些开销很大的对象,延迟到真正需要它的时候才去创建执行 图片懒加载 合并http请求 如果有...

  • JS设计模式-代理模式

    介绍 使用者无权访问目标对象 中间加代理,通过代理做授权和控制比如说公司的内网,当我们在家的时候也是需要一个代理才...

  • js中代理模式

    典型例子 jsonP用过代理,实现跨域交互

  • js设计模式(1)--代理模式

    定义 代理模式就是一个对象找另一个对象,对原对象进行访问 作用 1:在客户对象和目标对象之间做一个中介,降低客户对...

  • JS设计模式之代理模式

    代理是一个对象,它可以用来控制对本体对象的访问,它与本体对象实现了同样的接口,代理对象会把所有的调用方法传递给本体...

网友评论

    本文标题:JS代理模式

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