博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之代理模式
阅读量:6452 次
发布时间:2019-06-23

本文共 1541 字,大约阅读时间需要 5 分钟。

/* 代理模式* 由于对象不能直接引用另一个对象,所以需要通过代理对象在这两个对象之间起到中介作用* 可以在使用者和目标对象之间加一个代理对象,通过代理可以实现控制*/class Google {    get(url) {        return 'google';    }}class Proxy {    constructor() {        this.google = new Google();    }    get(url) {        return this.google.get(url)    }}let proxy = new Proxy()let result = proxy.get('http://www.google.com');console.log(result);复制代码

代理缓存

/* 反向代理* 负载均衡* 保护内部信息*/let sum = (function (n) {    let cache = {};    function multi(n) {        if (n <= 1) return 1;        return n * cache[n - 1] || multi(n - 1);    }    return function () {        let result = 0;        for (let i = 1; i <= n; i++) {            let res = multi(i);            cache[i] = res;            result += res;        }        return result;    }})()console.time('cost')console.log(sum(10000))console.timeEnd('cost')复制代码

es6 Proxy

let wangyan = {    name: 'wangyan',    age: 30,    height: 165,};let wangmama = new Proxy(wangyan, {    get(target, key) {        if (key === 'age') {            return target.age - 2;        } else if (key === 'height') {            return target.height + 3;        } else {            return target[key];        }    },    set(target, key, value) {        if (key === 'bf') {            let bf = value;            if (bf.age > 40) {                throw new Error('too old')            } else if (bf.height < 175) {                throw new Error('too low')            } else {                target.bf = bf;            }        }    }});console.log(wangmama.age)console.log(wangmama.bf = {    age: 50})复制代码

转载地址:http://xagwo.baihongyu.com/

你可能感兴趣的文章
洛谷——P2404 自然数的拆分问题
查看>>
(转)Mac 下设置android NDK的环境
查看>>
[struts]s:action 的使用方法
查看>>
dubbo问题总结
查看>>
20165320 第三周学习总结
查看>>
Struts2和Spring MVC的区别
查看>>
angular-bootstrap ui-date组件问题总结
查看>>
理解Javascript参数中的arguments对象
查看>>
day1
查看>>
(salesforce相关)AngularJs实现表格的增删改查
查看>>
p2:千行代码入门python
查看>>
bzoj1106[POI2007]立方体大作战tet*
查看>>
解决:Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误...
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
【转】正则基础之——神奇的转义
查看>>
团队项目测试报告与用户反馈
查看>>
MyBatis(1)——快速入门
查看>>
对软件工程课程的期望
查看>>
CPU高问题排查
查看>>
Mysql中文字符串提取datetime
查看>>