美文网首页
代理模式 - 演示与场景

代理模式 - 演示与场景

作者: EmilWong | 来源:发表于2019-06-10 11:11 被阅读0次

使用场景

  • VPN代理
  • SSR

UML类图

image.png

代码演示:

class RealImg {
    constructor(fileName){
        this.fileName = fileName
        this.loadFromDisk() //
    }
    display() {
        console.log('display... ' + this.fileName)
    }
    loadFromDisk(){
        console.log('loading... ' + this.fileName)
    }
}
class ProxyImg{
    constructor(fileName){
        this.realImg = new RealImg(fileName)
    }
    display() {
        this.realImg.display()
    }
}
// 测试
let proxyImg = new ProxyImg('1.png')
proxyImg.display()

JS使用场景

  • 网页事件代理
  • jQuery $.proxy
$('#div').click(function() {
  setTimeout($.proxy(function(){
    $(this).addClass('red')
  }, this), 1000)
})
  • ES6 Proxy 明星与经纪人

代理模式 vs 适配器模式

  • 适配器模式:提供一个不同的接口(如不同版本的插头)
  • 代理模式:提供一模一样的接口

代理模式 vs 装饰器模式

  • 装饰器模式:扩展功能,原有功能不变且可直接使用
  • 代理模式: 显示原有功能,但是经过限制或者阉割之后

相关文章

  • 代理模式 - 演示与场景

    使用场景 VPN代理 SSR UML类图 代码演示: JS使用场景 网页事件代理 jQuery $.proxy E...

  • 外观模式 - 演示与场景

    UML类图: 使用场景:业务场景,多个子系统代码演示: 不符合单一职责原则和开放封闭原则,因此谨慎使用,不可随意调用

  • 状态模式 - 演示与场景

    一个对象有状态变化 每次状态变化都会触发一个逻辑 不能总是if..else来控制

  • 工厂模式 - 演示与场景

    UML类图: 代码模拟: 实例:React.createElement 工厂模式设计原则: 构造函数和创建者分离 ...

  • 装饰器模式 - 演示与场景

    为对象添加新功能 不改变其原有的结构和功能 UML类图: 使用场景:core-decorators API 下一个...

  • 迭代器模式 - 演示与场景

    顺序访问一个集合 使用者无需知道集合的内部结构(封装)UML类图:image.png代码演示: 使用场景:jQue...

  • 单例模式 - 演示与场景

    系统中被唯一使用 一个类只有一个实例示例: 登录框 购物车 UML类图 代码演示: 使用场景:jQuery只有一个...

  • 代理模式

    与装饰者模式的区别 代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问 代理模式的使用场景 当无法或不想...

  • 观察者模式 - 演示与场景

    发布&订阅 一对多/一对一UML类图:image.png 代码演示: 使用场景:网页事件绑定 Promise三种状...

  • 适配器模式 - 演示与场景

    UML类图 设计原则验证 将旧接口和使用者进行分离 符合开放封闭原则

网友评论

      本文标题:代理模式 - 演示与场景

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