JavaScript 设计模式之代理模式
一、代理模式概念解读
1.代理模式概念文字解读
代理,顾名思义就是帮助别人做事,GOF对代理模式的定义如下:
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象:文件,资源。内存中的对象,或者是一些难以复制的东西。
2.代理模式概念拟物化解读
(中介,负责收齐公司职员的周汇报再将其交给老总的秘书(可过滤掉一些不必要的冗余的信息),卡扣)

二、代理模式的作用和注意事项
模式作用:
1.远程代理(一个对象将不同空间的对象进行局部代理)。
2.虚拟代理(根据需要创建开销很大的对象如渲染网页暂时用占位代替真图)。
3.安全控制(控制真实对象的访问权限 )。
4.智能指引(调用对象代理处理另外一些事情如垃圾回收机制)。
注意事项:
1.不能滥用代理,有时候仅仅是给代码增加复杂度。
三、代理模式的代码实战和总结
1.一个实例
代码如下:
<meta charset="utf-8"/>
<script type="text/javascript">
//代理模式需要3方,房东委托中介将房子卖给买家 //1.买家buyer
function buyer(argument){
this.name="小明";
} //2.中介agent(卖房saleHouse)
function agent(){ }
agent.prototype.saleHouse=function(){
new landlord(new buyer()).saleHouse("20万");
}; //3.房东landlord(卖房saleHouse),只是坐等收钱而已
function landlord(buyer){
this.buyer_name=buyer.name;
this.saleHouse=function(money){
alert('收到了来自【'+this.buyer_name+'】房款:'+money+'人民币');
}
}
(new agent).saleHouse();
</script>
结果截图:

JavaScript 设计模式之代理模式的更多相关文章
- JavaScript设计模式之代理模式
一.代理模式概念 代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下: 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问.代理模式使得代理对象控制具体对象的引用.代理几乎可 ...
- 第三章 --- 关于Javascript 设计模式 之 代理模式
第一.定义: 代理模式是为一个对象提供代用品或者占位符,以便控制对它的访问. 比如说,某男生小明想向他的女神 A 表白,刚好小明认识的一个女生B 和 女神A 是好朋友,那么小明就想让 女生B 帮忙送花 ...
- JavaScript设计模式_03_代理模式
代理模式是非常常见的模式,比如我们使用的VPN工具,明星的经纪人,都是代理模式的例子.但是,有人会疑问,明明可以直接访问对象,为什么中间还要加一个壳呢?这也就说到了代理模式的好处.在我看来,代理模式最 ...
- 学习javascript设计模式之代理模式
1.代理模式为一个对象提供一个代用品或占位符,以便控制对它的访问. 2.不用代理模式: 客户 -> 本体 使用代理模式: 客户 -> 代理 -> 本体 3.例子场景1 点击操作与 ...
- JavaScript设计模式(代理模式)
一.简单的单例模式: 1.未使用代理模式的情况:小明直接给女神送花 var Flower = function() {} var xiaoming = { sendFlower: function( ...
- JavaScript设计模式-19.代理模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C#设计模式(13)——代理模式(Proxy Pattern)
一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...
- 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
原文:乐在其中设计模式(C#) - 代理模式(Proxy Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 代理模式(Proxy Pattern) 作者:webabcd 介绍 为 ...
- JavaScript设计模式之----组合模式
javascript设计模式之组合模式 介绍 组合模式是一种专门为创建Web上的动态用户界面而量身制定的模式.使用这种模式可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更 ...
随机推荐
- 学习笔记:状态压缩DP
我们知道,用DP解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态.但是有这样的一些题 目,它们具有DP问题的特性,但是状态中所包含的信息过多,如果要用数组来保存状态的话需要 ...
- Unix/Linux环境C编程新手教程(30) 字符串操作那些事儿
函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 c ...
- 曲线平滑-B样条曲线 【转】
版权声明:本文为博主原创文章,未经博主允许不得转载. 3D空间曲线三次B样条平滑示例: struct D_DOT3D //D_DOT3D示例,未完全实现 { double x,y,z; } doubl ...
- string.Format对C#字符串格式化[转]
string.Format对C#字符串格式化 String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 ...
- SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
我的SQL 2014的虚拟机在迁移的时候, 存放TempDB的LUN被删掉了. 在虚拟机的操作系统启动了之后, SQL Server Instance却启动不起来了. 检查Event Log, 报错. ...
- Entity Framework泛型封装
Entity Framework本身的增删改查其实 已经很方便了,不过做项目的时候用的多了也就觉得有点累了,每个业务实体基本上都涉及到到了增删改查这四个基本的要素,至于封装每个公司可能都不一样,接口, ...
- 独特的deadlock(仅update语句也能造成死锁)
最近遇到了一个看上去很奇怪,分析起来很有意思的死锁问题.这个死锁看上去难以理解.而分析过程中,又使用了很多分析SQL Server死锁的典型方法.记录下来整个分析过程还是很有意义的. 问题重现步骤: ...
- CKEditor && CKFinder 配置
准备 ...
- 红米NOTE应用闪退(包括系统设置等各种界面)问题解决经历
关机状态下同时按减音量按钮和开机按钮,进入一个菜单,选择recovery(减音量键是移动,加音量键是确定),当出现一个倒地的机器人的时候,稍待片刻按开机键会出现双清以及刷机菜单.wipe data/f ...
- string、wstring、cstring、 char、 tchar、int、dword转换方法(转)
string.wstring.cstring. char. tchar.int.dword转换方法(转) 最近编程一直头痛这集中类型的转化,明知都可以转却总是记不住,不断的上网查来查去,在这里小结 ...