1. 简介
代理对象起到类似中介的作用,会增加一些功能(如,校验,合并等等),也会去掉一些原有对象的功能
1-1. 定义
1-2. 分类【按职责来划分】
- 虚拟代理:虚拟代理是把一些开销很大的对象,延迟到真正需要它的时候才去创建执行
- 安全代理:控制真实对象的访问权限
- 远程代理(一个对象将不同空间的对象进行局部代理)
- 智能代理(调用对象代理处理另外一些事情如垃圾回收机制增加额外的服务)
2. 案例
2.1 买彩票
通常一个代理存在多个模式,并不会进行严格划分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| var bifang = { buy: function(target) { var rmb = 10; target.result(rmb); } };
var agent = { buy: function(target) { this.listen(target,function() { bifang.buy(target); }) }, listen: function(target, cb) { var timer = setInterval(function(){ if(target.probability < 0.3){ cb(); clearInterval(timer); } },300); } };
var lotteryStation = { probability : 1, result: function() { this.probability < 0.3 ? console.log('恭喜你,中奖了') : console.log('很遗憾,没有中奖'); }, change: function() { this.probability = Math.random(); }, stare: function() { var that = this; that.change(); setInterval(() => { that.change(); }, 300); } };
lotteryStation.stare();
bifang.buy(lotteryStation);
agent.buy(lotteryStation);
|
__END__