博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代理模式
阅读量:6352 次
发布时间:2019-06-22

本文共 2007 字,大约阅读时间需要 6 分钟。

简介

代理模式的定义:

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

优点:

(1).职责清晰
真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
(2).代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
(3).高扩展性

案例

在平时的工作中,代理模式与我们息息相关,如:小明的同事是小美,小美是个高颜值,和无可挑剔的曲线身材美女。一次小美在网上网购了一些化装品,由于天猫双十一。十月的工资全部交给了双十一。到了取快递是时候发现自己根本拿不完这么多东西。于是呼,小美对坐在旁边的小明说。明GG帮我拿快递好吗?小明看到小美哀求的眼神,楚楚动人。绅士般的答应到:‘没问题’。小明开开心心的去帮小美拿快递了。

从这个案例中可以看出,小明就起到了代理的作用。事情是小美拿快递,由于种种原因,只有让小明代替小美拿快递。

//快递店var Expresspoint={    //给客户快递    pass:function(){        console.log('执行取快递');    }}//小明var xiaoming={    //获得消息    getmsg:function(target){        target.pass();    }}//小美var xiaomei={    //取快递    getExpress:function(target){        //小美告诉小明去取快递        xiaoming.getmsg(target);    }}xiaomei.getExpress(Expresspoint);复制代码

结果小明走到半路发现身体有点不舒服,去了趟厕所花费了几分钟。

//快递店var Expresspoint={    //给客户快递    pass:function(){        console.log('执行取快递');    }}//小明var xiaoming={    //取快递    getmsg:function(target){        setTimeout(function(){            target.pass();        },500);//假设500毫秒解决        }}//小美var xiaomei={    //取快递    getExpress:function(target){        //小美告诉小明去取快递        xiaoming.getmsg(target);    }}xiaomei.getExpress(Expresspoint);复制代码

从 小明走到半路发现身体有点不舒服来看,小明只是代理者,至于什么时候去帮小美拿快递是小明决定的。比如:小美让小明在快递店买个蛋糕。

//快递店var Expresspoint={    //给客户快递    pass:function(){        console.log('执行取快递');    }}//小明var xiaoming={    //取快递    getmsg:function(target){        var tostr=Object.prototype.toString;        if(target && tostr.call(target.pass)==="[object Function]"){            target.pass();        }else{            console.log('无法满足你的条件','代理者直接拒绝小美,快递店保持良好形象');        }    }}//小美var xiaomei={    //取快递    getExpress:function(target){        //小美告诉小明去取快递        xiaoming.getmsg(target);    }}//买蛋糕var Buycake={    buy:function(){      console.log('买蛋糕');    }}xiaomei.getExpress(Buycake);复制代码

这样代理者小明就起到了保护的作用。保持了快递店的良好形象。这里的小明是不是有点像咱们现实中的经纪人呢!比如拍电影需要先找经纪人,经纪人就是现实中最完美的代理者。

总结

代理模式是一种非常有意义的模式,代理模式的变体种类也很多这里只是简单介绍,希望你在web前端开发中使用到。

转载地址:http://jxmla.baihongyu.com/

你可能感兴趣的文章
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
面试题目3:智能指针
查看>>
取消凭证分解 (取消公司下的多个利润中心)
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>
Nest.js 处理错误
查看>>
你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
查看>>
18.3 redis 的安装
查看>>
jdbc 简单连接
查看>>