本文实例讲述了 设计模式之代理模式。分享给大家供大家参考,具体如下:
一、代理模式概念
代理,顾名思义就是帮助别人做事,GoF对代理模式的定义如下:
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。代理模式使得代理对象控制具体对象的引用。代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西。
解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。
代理模式的组成:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
二、代理模式的作用和注意事项
模式作用:
1、远程代理(一个对象将不同空间的对象进行局部代理)
2、虚拟代理(根据需要创建开销很大的对象如渲染网页暂时用占位代替真图)
3、安全代理(控制证实对象的访问权限)
4、智能指引(调用对象代理处理另外一些事情如垃圾回收机制)
注意事项:
1、不能滥用代理,有时候仅仅是给代码增加复杂度
三、代理模式代码和实战总结
<!DOCTYPE html>
<html>
<head lang="en">
< charset="UTF-8">
< >代理模式</ >
</head>
<body>
< >
//代理模式需要三方
//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){
// console.log("收到了来自【"+this.maijia_name+"】"+money+"人民币");
console.log("收到了来自【"+this.maijia_name+"】"+this.maijia_money+"人民币");
}
}
(new zhongjie()).maifang();
</ >
< >
// 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){
console.log("收到了钱"+money);
}
}
(new to()).maifang();
to().maifang();
</ >
</body>
</html>
使用在线HTML/CSS/ 代码运行工具 http://tools.jb51.net/code/HtmlJsRun测试运行效果如下:

更多关于 相关内容可查看本站专题:《 面向对象入门教程》、《 切换特效与技巧总结》、《 查找算法技巧总结》、《 错误与调试技巧总结》、《 数据结构与算法技巧总结》、《 遍历算法与技巧总结》及《 数学运算用法总结》
希望本文所述对大家 程序设计有所帮助。
继续阅读与本文标签相同的文章
上一篇 :
重磅!万字长文揭秘腾讯的5G探索地图
下一篇 :
腾讯云专家工程师廖龙:CDN边缘智能助力5G
-
有看头了!Showtime正将Uber故事拍成一部电视剧
2026-05-15栏目: 教程
-
卡死?你的BI速度慢吗?试试这个工具
2026-05-15栏目: 教程
-
印度电信运营商宣布使用爱立信设备建设5G核心网
2026-05-15栏目: 教程
-
微信这样发语音才能让人更喜欢听,看了这些,网友:还真的是!
2026-05-15栏目: 教程
-
任正非:6G或将10年内问世
2026-05-15栏目: 教程
