A5下载文章资讯

分类分类

JavaScript的设计模式经典之代理模式

2016-02-25 14:12作者:fang

一、代理模式概念

说明:顾名思义就是用一个类来代替另一个类来执行方法功能,这个模式跟装饰模式有点相似,不一样的是,代理模式是代替客户初始化被代理对象类,而装饰模式采用接口或初装饰者参数引用的方式来执行的。

解释:房屋中介,可以代理帮助卖家把房子卖给买家,这中间卖家说要卖的价钱就可以了,买家也可以提出自己要买的房型,中介可以帮忙处理中间环节。最后达成买卖。中介可以同时代理很多房屋买卖,并且可以代理租房事宜。

二、代理模式的作用和注意事项

模式作用:

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>

以上就是本文章的内容,希望对大家有所帮助

展开全部

相关

说两句网友评论
    我要跟贴
    取消