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

设计模式之代理模式

作者: Binaryify | 来源:发表于2016-03-26 23:52 被阅读17次

代理模式:

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

模式作用:

  1. 远程代理(一个对象将不同空间的对象进行局部代理)
  2. 虚拟代理(根据需要创建开销很大的对象如渲染网页暂时用占位图代替真图)
  3. 安全代理(控制真实对象的访问权限)
  4. 智能指引(调用对象代理处理另外一些事情如垃圾回收机制)

注意事项:

  1. 不能滥用代理,有时候仅仅是给代码增加复杂度

例子1:

//代理模式需要3方
//1.买家
function maijia(name){
    this.name=name;
}
// 2.中介 卖房
function zhongjie(){
}
zhongjie.prototype.maifang=function(){
    new fangdong(new maijia("小明")).maifang('20万');
}
// 3.房东 坐等收钱
function fangdong(maijia){
    this.maijia_name=maijia.name;
    this.maifang=function(money){
        console.log("收到了来自["+this.maijia_name+"]"+money+"人民币");
    }
}
(new zhongjie).maifang();//收到了来自[小明]20万人民币

例子2:

虚拟代理实现图片预加载

虚拟代理是把一些开销很大的对象,延迟到真正需要到它的时候才去创建
在web开发中,图片预加载是一种常用的技术,如果直接给某个img标签节点设置src属性,由于图片过大或者网络不佳,图片的往往有段时间会是一片空白.常用的做法是先用一张loading图片占位,然后用异步的方式加载图片,等图片加在好了再把它填充到img节点了,这种场景就很适合使用虚拟代理

var myImage=(function(){
    var imgNode=new Image();
    document.body.appendChild(imgNode);
    return {
        setSrc:function(src){
            imgNode.src=src;
        }
    }
})()

var proxyImage=(function(){
    var img=new Image();
    img.onload=function(){
        myImage.setSrc(this.src);
    }
    return {
        setSrc:function(src){
            myImage.setSrc('loading.gif');
            img.src=src;
        }
    }
})()
proxyImage.setSrc("http://www.baidu.com/img/bdlogo.png")

相关文章

  • 设计模式之代理模式

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

  • 代理模式

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

  • Java设计模式之代理模式

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

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

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

  • 设计模式之代理模式2

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

  • 设计模式之代理模式

    设计模式之代理模式 简介 代理模式是结构型设计模式。 当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过...

  • 设计模式之代理模式

    title: 设计模式之代理模式date: 2018-08-15 20:25:42tags: 设计模式 笔记 Ja...

  • java设计模式之代理模式(静态代理)

      今天给大家分享的是java设计模式之代理模式中的静态代理模式,动态代理模式将在后面文章中给出。如有不足,敬请指...

  • Android 代理模式

    Android 设计模式系列文章 Android 23种设计模式 前言 代理模式可能是我们平时开发中最常见的模式之...

  • 设计模式之代理模式

    设计模式之代理模式 1.代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问. 2.代理模式的使用场景 当...

网友评论

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

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