精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端的設(shè)計(jì)模式系列-外觀(門面)模式

開發(fā) 前端
代碼也寫了幾年了,設(shè)計(jì)模式處于看了忘,忘了看的狀態(tài),最近對(duì)設(shè)計(jì)模式有了點(diǎn)感覺,索性就再學(xué)習(xí)總結(jié)下吧。

本文轉(zhuǎn)載自微信公眾號(hào)「windliang」,作者windliang。轉(zhuǎn)載本文請(qǐng)聯(lián)系windliang公眾號(hào)。

代碼也寫了幾年了,設(shè)計(jì)模式處于看了忘,忘了看的狀態(tài),最近對(duì)設(shè)計(jì)模式有了點(diǎn)感覺,索性就再學(xué)習(xí)總結(jié)下吧。

大部分講設(shè)計(jì)模式的文章都是使用的 Java、C++ 這樣的以類為基礎(chǔ)的靜態(tài)類型語言,作為前端開發(fā)者,js 這門基于原型的動(dòng)態(tài)語言,函數(shù)成為了一等公民,在實(shí)現(xiàn)一些設(shè)計(jì)模式上稍顯不同,甚至簡單到不像使用了設(shè)計(jì)模式,有時(shí)候也會(huì)產(chǎn)生些困惑。

下面按照「場景」-「設(shè)計(jì)模式定義」- 「代碼實(shí)現(xiàn)」- 「更多場景」-「總」的順序來總結(jié)一下,如有不當(dāng)之處,歡迎交流討論。

場景

網(wǎng)絡(luò)請(qǐng)求中,我們一般使用 axios 庫,支持用 Promise 風(fēng)格調(diào)用。

axios
.get("/api/user", {
params: {
ID: "123",
},
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});

axios
.post(
"/api/user",
{
firstName: "wind",
lastName: "liang",
},
{
headers: { "Content-Type": "application/json" },
}
)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});

可以看到上邊的 get 和 post 傳參并不統(tǒng)一,使用起來會(huì)比較繁瑣,post還需要手動(dòng)傳遞 headers 。

為了解決這些問題,我們可以通過外觀(門面)模式來解決。

外觀(門面)模式

看下 維基百科 的定義。

★The facade pattern (also spelled fa?ade) is a software-design pattern commonly used in object-oriented programming. Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or structural code.”外觀模式相當(dāng)于為一個(gè)相對(duì)復(fù)雜的接口或者結(jié)構(gòu)提供一個(gè)上層接口供用戶使用,看一下UML 類圖。

舉一個(gè)簡單例子,比如開電腦是一個(gè)復(fù)雜的過程,我們可以封裝成一個(gè)函數(shù)來實(shí)現(xiàn):

/* Complex parts */

class CPU {
public void freeze() { ... }
public void jump(long position) { ... }
public void execute() { ... }
}

class Memory {
public void load(long position, byte[] data) {
...
}
}

class HardDrive {
public byte[] read(long lba, int size) {
...
}
}

/* Fa?ade */

class Computer {
public void startComputer() {
cpu.freeze();
memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));
cpu.jump(BOOT_ADDRESS);
cpu.execute();
}
}

/* Client */

class You {
public static void main(String[] args) {
Computer facade = new Computer();
facade.startComputer();
}
}

改寫成 js 。

算了不改寫了,哈哈,直白點(diǎn)其實(shí)就是把幾個(gè)函數(shù)封裝到了一個(gè)函數(shù)來調(diào)用。

UML 類圖中外觀模式會(huì)和很多 class交互,但在 js 中可能會(huì)很少遇到這種情況,通常是當(dāng)參數(shù)比較復(fù)雜或者某個(gè)功能使用起來比較麻煩的時(shí)候我們就可以通過外觀模式進(jìn)行簡化。

代碼實(shí)現(xiàn)

回到開頭 axios 的問題,我們可以對(duì)axios 進(jìn)行一層封裝。

// request.js
import axios from 'axios';
export const get = function (url, params) {
return axios.get(url, { params });
};

export const post = function (url, params) {
return axios.post(
url,
{ ...params },
{ headers: { "Content-Type": "application/json" } }
);
};

然后引用 request.js 進(jìn)行調(diào)用。

import { get, post } from "./request";

get("/api/user", {
ID: "123",
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});

post("/api/user", {
firstName: "wind",
lastName: "liang",
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});

補(bǔ)充一句:上邊的封裝只是為了演示外觀模式的使用,實(shí)際項(xiàng)目中封裝的會(huì)更加全面

通過門面模式除了簡化了我們的調(diào)用,還有一個(gè)好處就是將底層調(diào)用封裝了起來,未來如果底層需要變化,比如上邊的 axios替換為 fetch ,我們只需要去修改 request.js 即可,業(yè)務(wù)方無需感知。

更多場景

外觀模式說的寬泛的話就是將復(fù)雜的調(diào)用包裝一層變的簡單些。

我們平時(shí)用到的 Vue 的 template 、React 的 jsx ,也可以認(rèn)為使用了外觀模式,他們都將底層 dom 創(chuàng)建封裝起來,使得我們編寫頁面會(huì)變得更加簡單。

易混設(shè)計(jì)模式

前邊講到的 代理模式、適配器模式、模版方法 結(jié)構(gòu)上和外觀模式看起來都有些像,區(qū)別就在于他們的意圖不同:

適配器模式是為了解決兩個(gè)對(duì)象之間不匹配的問題,而原對(duì)象又不適合直接修改,此時(shí)可以使用適配器模式進(jìn)行一層轉(zhuǎn)換。

代理模式是為了增強(qiáng)原對(duì)象的功能,提供的接口不會(huì)改變。

模版模式是將不同功能組合在一起,只提供框架,具體實(shí)現(xiàn)還需要調(diào)用者傳進(jìn)來。

外觀模式是將比較復(fù)雜的調(diào)用進(jìn)行一層封裝,提供一個(gè)新的接口供用戶使用。

外觀模式是一個(gè)比較自然的設(shè)計(jì)模式,某個(gè)功能感覺用起來太麻煩還頻繁,自然會(huì)想到去封裝一層再來使用。

外觀模式一個(gè)額外好處就是未來能夠更好的應(yīng)對(duì)底層的變化。


責(zé)任編輯:武曉燕 來源: windliang
相關(guān)推薦

2021-03-18 15:33:22

設(shè)計(jì)模式外觀

2020-10-23 09:40:26

設(shè)計(jì)模式

2022-11-14 08:44:56

前端門面模式接口

2022-02-06 22:30:36

前端設(shè)計(jì)模式

2022-01-19 08:21:12

設(shè)計(jì)裝飾器模式

2022-02-11 10:22:48

模版模式語言

2021-04-18 21:07:32

門面模式設(shè)計(jì)

2023-05-06 07:51:22

JavaFacade設(shè)計(jì)模式

2022-01-29 22:12:35

前端模式觀察者

2022-02-13 23:33:24

設(shè)計(jì)模式Java

2024-02-19 13:11:38

門面模式系統(tǒng)

2010-01-21 09:08:53

.NET設(shè)計(jì)模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2022-01-12 13:33:25

工廠模式設(shè)計(jì)

2020-10-20 13:33:00

建造者模式

2012-01-13 15:59:07

2021-10-28 19:09:09

模式原型Java

2021-10-26 00:21:19

設(shè)計(jì)模式建造者

2020-11-09 08:20:33

解釋器模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产日韩1区| 青草久久视频| 亚洲精品少妇30p| 国产一级特黄a大片99| 91丝袜一区二区三区| 色天天综合网| 亚洲激情视频在线观看| 91视频免费版污| 麻豆av在线播放| 91麻豆成人久久精品二区三区| 国产精品久久久av| 免费毛片在线播放免费| 精品国产欧美日韩| 亚洲成人在线网| 午夜激情影院在线观看| 日本午夜大片a在线观看| 亚洲欧美综合色| 久久青青草综合| 国产wwwxxx| 美女www一区二区| 欧美激情亚洲国产| 久久爱一区二区| 精品99久久| 亚洲精品一区二区三区精华液 | 美女视频免费一区| 国内精品久久久久伊人av| 国精产品视频一二二区| 国产成人av| 亚洲精品美女在线观看| 国产吃瓜黑料一区二区| 日韩欧美专区| 91福利在线观看| 欧美 国产 综合| 午夜羞羞小视频在线观看| 国产精品久久一卡二卡| 日韩欧美激情一区二区| 五月婷婷久久久| 成人av一区二区三区| 亚洲最大的网站| 国产毛片毛片毛片毛片| 久久电影网电视剧免费观看| 国产精品国内视频| jizz国产在线| 日韩高清电影一区| 国产精品jizz在线观看麻豆| 韩国av中文字幕| 一本久久知道综合久久| 久久久亚洲福利精品午夜| 久久精品一区二区三| 国产综合精品| 久久久亚洲影院| 日本网站免费观看| 99国产成+人+综合+亚洲欧美| 欧美精品videossex性护士| 欧美精品久久久久性色| 国产精品分类| 97免费视频在线播放| 欧美亚洲天堂网| 国产亚洲成人一区| 国产成人久久精品| 亚洲天堂视频网| 国产在线一区观看| 成人欧美一区二区三区视频 | 91欧美一区二区| 久久天天狠狠| 国内精品在线视频| 国产精品国产三级国产aⅴ中文 | 91麻豆精品国产91久久久久| 国产一区二区在线免费播放| 日韩免费在线电影| 精品日韩欧美一区二区| 真人bbbbbbbbb毛片| 国产91久久精品一区二区| 伊人久久综合97精品| 青青青视频在线免费观看| 91精品天堂福利在线观看| 久久91超碰青草是什么| 五月婷婷中文字幕| 免费欧美在线视频| av激情久久| 黄网在线免费| 亚洲人被黑人高潮完整版| 久久亚洲a v| 成人影院av| 777欧美精品| 鲁大师私人影院在线观看| 日本一本不卡| 久久久久久久久久国产| 日韩美一区二区| 国产乱码精品1区2区3区| 国产一区二区不卡视频在线观看 | 美女亚洲一区| 久久精品视频在线播放| 黄色片视频网站| 麻豆精品在线看| 国产区二精品视| 69久久精品| 红桃av永久久久| 久久综合在线观看| 久久最新网址| 欧美风情在线观看| 涩涩视频在线观看| 成人福利视频在线看| 亚洲欧洲三级| 欧美aa在线| 日韩欧美国产一区二区三区| 在哪里可以看毛片| 国产一区二区欧美| 色婷婷av一区二区三区在线观看| 伊人久久综合视频| 国产精品原创巨作av| 日韩偷拍一区二区| 涩涩av在线| 精品成人一区二区三区四区| 亚洲色图27p| 老司机精品视频网站| 国产精品区一区二区三在线播放 | 日本成熟性欧美| 亚洲第一黄色片| 综合色中文字幕| 少妇激情一区二区三区| 婷婷精品在线观看| 高清欧美性猛交xxxx| 99久久夜色精品国产亚洲| 国产精品网曝门| 男人亚洲天堂网| 日本在线中文字幕一区| 欧美极品少妇全裸体| 国产免费一区二区三区免费视频| 国产欧美日韩三级| 激情五月开心婷婷| 亚洲v天堂v手机在线| 国内精品一区二区三区| 国产91免费在线观看| 亚洲视频一区在线| 拔插拔插华人永久免费| 99热精品久久| 成人亚洲综合色就1024| 一广人看www在线观看免费视频| 色国产综合视频| 少妇大叫太粗太大爽一区二区| 亚洲免费观看| 好吊色欧美一区二区三区视频| 第四色日韩影片| 精品国产一区二区精华| 国产无遮挡裸体免费视频| 东方aⅴ免费观看久久av| 久久久99精品视频| 99久久人爽人人添人人澡| 欧美激情小视频| 手机看片1024国产| 欧美日韩亚洲激情| 91成人破解版| 美女在线视频一区| 一区二区91美女张开腿让人桶| 久久久加勒比| 久久亚洲精品成人| 亚洲精品久久久久久动漫器材一区 | 国产一区久久久| 大陆极品少妇内射aaaaaa| 亚洲日本视频在线| 97香蕉超级碰碰久久免费软件| 日本一本草久在线中文| 日韩欧美视频一区二区三区| 三年中国中文观看免费播放| 久久er99精品| 成人一区二区av| 日本午夜精品| 国产欧美一区二区三区久久人妖| 国产写真视频在线观看| 精品99一区二区| 欧美黄色一级大片| 中文字幕一区二区三区在线观看| 99热这里只有精品2| 一区视频在线看| 日本日本精品二区免费| 国产精品高清一区二区| 91国内免费在线视频| 国产在线网站| 日韩欧美另类在线| 久久精品无码av| 成人欧美一区二区三区| 美女黄色一级视频| 免费看精品久久片| 男人的天堂avav| 宅男在线一区| 91天堂在线观看| 黄色亚洲网站| 美女撒尿一区二区三区| 免费毛片在线| 日韩精品一区国产麻豆| 无码人妻av免费一区二区三区| 亚洲特级片在线| 久久精品一区二区免费播放| 国产在线播放一区三区四| 777久久久精品一区二区三区| 欧美wwwww| 欧美激情导航| 91夜夜蜜桃臀一区二区三区| 国产精品视频区| 欧美久久天堂| 欧美高清第一页| 在线观看的av| 亚洲男人第一网站| 丰满岳乱妇国产精品一区| 91sa在线看| 日韩欧美猛交xxxxx无码| 九九热播视频在线精品6| 国产精品美女www爽爽爽视频| 日韩精品卡一| 在线视频中文亚洲| 婷婷开心激情网| 91麻豆精品国产无毒不卡在线观看| 日韩欧美亚洲视频| 亚洲日本青草视频在线怡红院| www国产视频| 国产成人亚洲精品青草天美| 男女视频在线看| 老司机一区二区三区| 成人免费性视频| 中文字幕一区二区精品区| 午夜精品美女久久久久av福利| 日韩有码中文字幕在线| 国产传媒欧美日韩| 日韩在线亚洲| 亚洲淫片在线视频| 亚洲国产91视频| 国产精品欧美在线| 欧美日韩国产网站| 国产99久久精品一区二区永久免费| 鲁鲁在线中文| 国内精品久久久久久中文字幕| 狂野欧美性猛交xxxxx视频| 久久精品99久久久香蕉| 欧美私人网站| www.国产一区| 日本在线观看视频| 久久精品91久久久久久再现| 成a人v在线播放| 国产亚洲激情在线| 丁香在线视频| 中文字幕亚洲第一| 色网站在线看| 精品国内产的精品视频在线观看| 日本www在线| 精品国偷自产在线视频99| 久草中文在线| 欧美日韩xxxxx| 黄色在线观看视频网站| 久久久亚洲网站| 伊人网在线播放| 国产成人免费av| 国产美女久久| 91人人爽人人爽人人精88v| 日韩一区网站| 精品久久sese| 欧美美女一区| 成人手机视频在线| 国产精品chinese| 波多野结衣之无限发射| 久久久久久网| 男人的天堂最新网址| 国产成人自拍高清视频在线免费播放| 超级砰砰砰97免费观看最新一期 | 91精品国产综合久久久久久久久| 日韩毛片免费看| 91影院未满十八岁禁止入内| 成人在线tv视频| 日本不卡一区| 亚洲天堂免费| 免费 成 人 黄 色| 蜜臀精品久久久久久蜜臀| 手机在线视频一区| 成人avav在线| 久久久久久久毛片| 亚洲精品高清在线观看| 激情五月色婷婷| 欧美日韩一区二区三区免费看| 国产高清不卡视频| 亚洲新中文字幕| 中文字幕资源网在线观看| 91爱视频在线| 成人污版视频| 欧美男人的天堂| 欧美一区免费| 18岁视频在线观看| 国产福利91精品一区| 国产精品密蕾丝袜| 亚洲香蕉伊在人在线观| 国产三级理论片| 精品国产乱码久久久久久蜜臀| 黄视频在线播放| 欧美国产在线视频| 成人黄页网站视频| 国产自产在线视频一区| 91精品国产调教在线观看| 国模杨依粉嫩蝴蝶150p| 国产盗摄女厕一区二区三区| 亚洲区免费视频| 亚洲午夜国产一区99re久久| 亚洲视频久久久| 日韩黄色av网站| 欧洲成人综合网| 国产一区二区在线免费视频| 神马午夜久久| 日韩 欧美 视频| 加勒比av一区二区| 国产精品美女高潮无套| 天天综合天天做天天综合| 国产视频www| 深夜成人在线观看| av综合电影网站| 国产成人精品一区二区三区福利| 91一区在线| 一区二区三区视频在线观看免费| 99久久精品费精品国产一区二区| av成人免费网站| 欧美日韩激情一区| 国产私人尤物无码不卡| 97超视频免费观看| 国产精品香蕉| 黄色一级片黄色| 国产精品一区二区免费不卡| 国产一区二区三区视频播放| 色天天综合色天天久久| 香蕉久久国产av一区二区| 欧美高清无遮挡| 亚洲天堂av资源在线观看| 91免费视频黄| 韩国一区二区在线观看| 日韩亚洲欧美中文字幕| 欧美日韩在线播放三区四区| 黄色av免费在线观看| 日韩女在线观看| 伊人精品一区| 日韩中文字幕免费在线| 久久久久久麻豆| 神马久久久久久久| 亚洲视频电影图片偷拍一区| 中文在线免费视频| 裸体丰满少妇做受久久99精品| 99热精品在线| 中文字幕在线免费看线人| 丁香五六月婷婷久久激情| 欧洲毛片在线| 国产成人一区二区三区小说| 欧美色婷婷久久99精品红桃| 日本va中文字幕| 国产精品久久免费看| 91福利免费视频| 欧美成人免费在线观看| 在线观看视频一区二区三区| 国产高清www| 99re这里都是精品| 无码人妻精品一区二区50| 国产一区二区三区在线免费观看| 日韩经典一区| 中文字幕第一页亚洲| 国产精品综合在线视频| 九九九国产视频| 蜜臀国产一区二区三区在线播放| 真实乱视频国产免费观看| 在线影视一区二区三区| 福利成人在线观看| 国产精品揄拍500视频| 四季av一区二区凹凸精品| 永久免费看片在线观看| 久久99精品久久久| 在线看的片片片免费| 日韩色在线观看| 9lporm自拍视频区在线| 明星裸体视频一区二区| 日本欧美大码aⅴ在线播放| 少妇高潮在线观看| 欧美成人aa大片| 欧美自拍电影| 激情视频小说图片| 99久久精品免费精品国产| 91免费黄视频| 成人国产精品免费观看动漫| 性色av免费观看| 久久综合久久88| 青青久久av| 亚洲一区二区三区观看| 香蕉影视欧美成人| 天天影视久久综合| 国产精品一区二区不卡视频| 日韩av电影天堂| 国产一级特黄a高潮片| 一本色道久久88精品综合| 亚洲电影一区| 男人舔女人下面高潮视频| 亚洲黄网站在线观看| 亚洲三区在线观看无套内射| 成人福利视频在线观看| 国产精品久久久久久久免费软件| 成人三级视频在线观看| 日韩av综合网| 日韩精品一区国产| 精品少妇无遮挡毛片|