当客户程序不断地访问本体程序,会产生副作用,譬如垃圾请求、不符合规范的请求,或者是本体程序尚未做好准备,所以需要通过代理的规范请求内容,过滤不符合要求的请求,这就是代理模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
var A = function (num){ return num*2; }
var B = function (num){ if(typeof num !== 'number'){ console.log('你输入的不是数字'); return false; }else{ A(num); } }
(function (){ B(3); B('3') })()
|
当客户程序请求本体程序会产生大量的数据及开销时,可以使用代理来处理这些请求,如果发现有缓存的内容,则直接返回数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var A = function (id){ return Math.floor(Math.random()*Math.pow(10,10)).toString(26); }
var B = (function (){ var map = {}; return function (id){ if(!map[id]){ map[id] = A(id); } return map[id]; } })();
B(1); B(1); B(3);
|