JavaScript设计模式之代理模式

1、代理模式概念

代理,顾名思义就是帮助别人作事,GoF对代理模式的定义以下:html

  代理模式(Proxy),为其余对象提供一种代理以控制对这个对象的访问。代理模式使得代理对象控制具体对象的引用。代理几乎能够是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西。设计模式

解释:房屋中介,能够代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就能够了,买家也能够提出本身要买的房型,中介能够帮忙处理中间环节。最后达成买卖。中介能够同时代理不少房屋买卖,而且能够代理租房事宜。安全

2、代理模式的做用和注意事项

模式做用:函数

一、远程代理(一个对象将不一样空间的对象进行局部代理)this

二、虚拟代理(根据须要建立开销很大的对象如渲染网页暂时用占位代替真图)spa

三、安全代理(控制证明对象的访问权限)prototype

四、智能指引(调用对象代理处理另一些事情如垃圾回收机制)设计

注意事项:代理

一、不能滥用代理,有时候仅仅是给代码增长复杂度code

3、代理模式代码和实战总结

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>


<script>
    //代理模式须要三方
    //1.买家
    function maijia(){
        this.name = "小明";
        this.money = "30万";
    }
    //2.中介
    function zhongjie(){
    }
    zhongjie.prototype.maifang = function(){
        //new fongdong(new maijia()).maifang("20万");
        new fongdong(new maijia()).maifang("20万");
    }
    //3.卖家
    function fongdong(maijia){
        this.maijia_name = maijia.name;
        this.maijia_money = maijia.money;
        this.maifang = function(money){
//            alert("收到了来自【"+this.maijia_name+"】"+money+"人民币");
            alert("收到了来自【"+this.maijia_name+""+this.maijia_money+"人民币");
        }
    }

    (new zhongjie()).maifang();
</script>

<script>

//    A2B
    function A(){
        this.money = "20RMB";
    }
    function to(){
        if(!(this instanceof to)){
            return new to;
        }
    }
    to.prototype.maifang = function(){
        var a = new A();
        new B().maifang(a.money);
    }
    function B(){
        this.maifang = function(money){
            alert("收到了钱"+money);
        }
    }

    (new to()).maifang();
    to().maifang();
</script>
</body>
</html>

 

 其余设计模式连接:

相关文章
相关标签/搜索