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>

 

 其他設計模式鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM