代理模式:爲其餘對象提供一種代理以控制對這個對象的訪問
當我第一次看到代理模式的定義是,腦海中浮現的一句代碼就是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
北落師門函數