一、代理模式概念
说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。
解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。
二、代理模式的作用和注意事项
模式作用:
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>
本文地址:https://www.stayed.cn/item/3781
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我