代理模式:为其余对象提供一种代理以控制对这个对象的访问
当我第一次看到代理模式的定义是,脑海中浮现的一句代码就是const that = this;
,咱们经过that
来代理this
的访问,虽然没有体现控制的意味,但体现了代理的意思。前端
在平常的开发工做之中,我对于代理模式的理解是:对对象的操做添加过滤的手段。git
以前在工做中遇到一个场景:平台管理系统须要去维护各子系统的公共数据(CommonData),各子系统在使用时去拉取公共数据,可是这样拉取公共数据其实会是比较大的开销,由于公共数据的变化比较缓慢,时效性比较低,咱们能够经过代理拉取公共数据的函数来操做。代码以下:github
// 拉取公共数据函数设计模式
const getCommonData = async (type) => { return await Ajax(type); }; // 代理函数 const CommonDataMap = new Map(); const getCommonDataProxy = async (type) => { let data = CommonDataMap.get(type); if (!data) { data = await getCommonData(type); CommonDataMap.set(type, data); } return data; };
在前端中,我遇到或使用代理模式的场景有:安全
大话设计模式 -- 程杰async
北落师门函数