zoukankan      html  css  js  c++  java
  • 代理模式

    js设计模式(9)---代理模式

     

    0.前言                                                                

       KG、PP被交易到了布鲁克林篮网,我的心情很复杂,一方面为他们不能终老celtics感到惋惜,另一方面为他们能够再次冲击总冠军感到高兴。从07年以来,作为一个铁杆celtics球迷,他们给我带来很多喜怒哀乐,也记载我的青春,不过这一切都会成为历史。

    1.代理模式是什么                                                 

       1.1、代理(proxy)是一个对象,它可以用来控制对另外一个对象的访问;

       1.2、代理对象和本体对象实现了同样的接口,并且会把任何方法调用传递给本体对象;

    2、应用

       2.1、远程代理

        代理可以代理本体对象被实例化,并使其可被远程访问。这一个应用自己不是很熟悉,暂时搁置。

       2.2、虚拟代理

       这是代理用于最多的一种情况。可以将本地的实例化推迟到真正需要的时候,对于实例化比较占用资源的本体,显得非常有用。  

    复制代码
    //本人较懒,把大叔的例子借用过来,进行了修改来说明虚拟代理如何使用,希望大叔别打我
    //
    先声明美女对象 var girl = function (name) { this.name = name; }; // 这是dudu var dudu = function (girl) { this.girl = girl; this.sendGift = function (gift) { alert("Hi " + girl.name + ", dudu送你一个礼物:" + gift); } }; // 大叔是代理 var proxyTom = function (girl) { this.girl = girl; this.du = null; this._initialize = function(){ if(this.du === null){ this.du = new dude(this.girl) } } this.sendGift = function (gift) { this._initialize(); this.du.sendGift(gift); } };

    //调用代理对象
    var proxy = new proxyTom(new girl("酸奶小妹"));
    proxy.sendGift("999朵玫瑰");
     
    复制代码

    3.与装饰者模式的区别                                           

       相同之处:都要对其他对象进行包装,都要事先与被包装对象相同的接口,而且都要把方法调用传递给被包装的对象。

       不同之处:一是装饰者会对被包装对象的功能进行修改或扩充,但是代理只不过是控制对它的访问;二是被包装对象的创建方式上:装饰者模式被包装对象的实例化过程完全是独立的,而在代理模式中,被包装对象的实例化是代理的实例化过程的一部分。

    4.个人理解总结                                                    

       1.代理模式是用来对对象进行控制;

       2.代理对象和本体对象实现了相同的接口;

       3.代理模式主要应用是虚拟代理、远程代理

       4.虚拟代理主要面向那些实例化比较占用资源的类,通过虚拟代理可以延迟类的实例化,在需要调用的时候再进行实例化。

     
     
  • 相关阅读:
    免费的Office批量打印工具 Word、Excel、PDF批量打印
    PHP数据库批量去注释、删字段
    SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
    CentOS 安装 nginx-1.19.4 与原版本共存
    毕业5年之——上个五年计划复盘20210919
    ubunt 20.04 有道词典命令行工具
    java中针对 try,catch和finally一些总结
    Linux find命令与cp命令连用
    MySQL基本操作笔记
    挖矿病毒排查
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3169787.html
Copyright © 2011-2022 走看看