zoukankan      html  css  js  c++  java
  • JavaScript设计模式之代理模式

    一、代理模式概念

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

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

    解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。

    二、代理模式的作用和注意事项

    模式作用:

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

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

    3、安全代理(控制证实对象的访问权限)

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

    注意事项:

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

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

    <!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>

     其他设计模式链接:

  • 相关阅读:
    class线程信息
    Class 文件简介
    JVM对象及垃圾回收处理
    jvm体系结构
    查找

    二叉树
    队列


  • 原文地址:https://www.cnblogs.com/cangowu/p/5070759.html
Copyright © 2011-2022 走看看