精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲精品视频在线看| 精品午夜久久福利影院| 伊人久久男人天堂| 91亚洲免费视频| 婷婷色在线资源| 91社区在线播放| 成人网在线观看| 国产精品一区二区三区四| 日韩三级在线| 9l亚洲国产成人精品一区二三| 狠狠色综合日日| 97欧美精品一区二区三区| 人妻互换一区二区激情偷拍| 国产日韩三级| 91精品国产综合久久精品app| 玩弄中年熟妇正在播放| 国产精品久久麻豆| 国产亚洲欧美日韩在线一区| 国产欧美一区二区三区另类精品 | 午夜国产在线视频| 国产精品一区二区久久不卡| 国产精品91在线| 国产精品theporn动漫| 久久中文亚洲字幕| 亚洲欧美精品在线| 性欧美18—19sex性高清| 婷婷丁香久久| 欧美自拍偷拍一区| 大肉大捧一进一出好爽视频| 日本欧美电影在线观看| 亚洲婷婷国产精品电影人久久| 欧美精品一区三区在线观看| 日韩永久免费视频| 国产成人免费视频网站| 成人精品一区二区三区| 波多野结衣一本一道| 国产毛片一区| 91极品女神在线| 国产午夜精品无码| 国产精品v日韩精品v欧美精品网站 | 欧美日韩国产综合视频| www.66久久| 国产中文一区二区| 天天爽夜夜爽夜夜爽| 国产99精品国产| 91沈先生播放一区二区| 国产精品一区二区人人爽| 奇米四色…亚洲| 国产精品视频一| 亚洲视频在线观看免费视频| 免费高清在线一区| 国产精品自在线| 国产一区二区小视频| 麻豆成人综合网| 国产精品综合网站| 99热这里只有精品在线| 国产精品一区二区x88av| 91色视频在线导航| jlzzjlzzjlzz亚洲人| 国产高清无密码一区二区三区| 亚洲精品日韩激情在线电影| 国产黄色一区二区| 国产.欧美.日韩| 国产视频在线观看一区| 日本福利片在线| 久久精品欧美一区二区三区不卡| 日本在线观看不卡| 丝袜美腿美女被狂躁在线观看| 国产精品久久久久婷婷| 黄色www在线观看| 日本三级韩国三级欧美三级| 午夜精品影院在线观看| 国产a级片免费观看| 日本免费成人| 欧美成人三级电影在线| 日本一级片在线播放| 国产一区99| 久久人体大胆视频| 国产一级中文字幕| 久久蜜桃资源一区二区老牛| 国产精品一区二区性色av | 精品亚洲国内自在自线福利| 亚洲最大福利网站| 天堂av电影在线观看| 99精品视频一区| 亚洲人成影视在线观看| 中文字幕在线观看播放| 欧美日韩在线视频首页| 在线黄色免费观看| 韩国精品福利一区二区三区| 亚洲图片在线综合| 国产盗摄一区二区三区在线| 国产一区二区三区的电影 | 视频一区在线| 亚洲欧洲日本专区| 麻豆天美蜜桃91| 亚洲欧美久久久| 国产专区欧美专区| 日韩在线无毛| 一区二区三区欧美日| 丁香啪啪综合成人亚洲| 我要色综合中文字幕| 亚洲欧洲免费视频| 国产精品suv一区二区69| 蜜桃精品在线观看| 免费久久久一本精品久久区| 二区三区在线观看| 欧美在线免费视屏| 精品无码国产一区二区三区51安| 97视频精品| 国产999在线观看| 亚洲精品久久久久久久久久久久久久| 久久久久久久综合狠狠综合| 日韩黄色片在线| 99久久er| 国产午夜一区二区| 天天综合网入口| 国产69精品久久久久777| www.午夜色| jizzyou欧美16| 精品亚洲一区二区三区在线播放 | 欧美三级欧美一级| 中文字幕狠狠干| 影音国产精品| 成人毛片网站| 国产在线高清视频| 欧美日韩免费不卡视频一区二区三区| 日本少妇色视频| 亚洲承认在线| 成人自拍网站| 日本高清成人vr专区| 制服.丝袜.亚洲.中文.综合| 91无套直看片红桃在线观看| 久久蜜桃精品| 日本一区二区久久精品| 欧美大片1688| 亚洲人成人99网站| 一级黄色在线视频| 久久精品亚洲乱码伦伦中文| 无码人妻丰满熟妇区96| 国产日韩三级| 91高清视频免费观看| 婷婷五月综合久久中文字幕| 午夜精品久久久久影视| 三级视频网站在线观看| 亚洲看片免费| 久久精品99久久| 中文字幕在线直播| 亚洲人精品午夜在线观看| 视频一区二区三区四区五区| 久久久精品tv| 国产免费999| 久久精品国产www456c0m| 国产欧美韩国高清| 在线黄色网页| 亚洲的天堂在线中文字幕| 日本少妇bbwbbw精品| 99国产精品国产精品毛片| 国产性xxxx18免费观看视频| 久久99性xxx老妇胖精品| 国产精品黄页免费高清在线观看| av色图一区| 欧美一区二区二区| 日韩欧美国产亚洲| 国产欧美一区二区三区网站| 欧美美女性视频| 欧美国产三区| 精品婷婷色一区二区三区蜜桃| 欧美大片免费高清观看| 中文国产成人精品| 精品国自产在线观看| 亚洲国产综合人成综合网站| 精品无码人妻一区| 久久aⅴ国产欧美74aaa| 免费的一级黄色片| 最近国产精品视频| 国产一区二区视频在线观看| 日韩免费影院| 亚洲欧美日韩中文在线制服| 国产理论片在线观看| 亚洲 欧美综合在线网络| 午夜精产品一区二区在线观看的| 精品系列免费在线观看| jizzjizz国产精品喷水| 日韩av自拍| 国产综合欧美在线看| a成人v在线| 91av在线播放| 福利在线视频网站| 亚洲人成电影在线播放| 国产亲伦免费视频播放| 欧美日韩免费网站| 欧美肥妇bbwbbw| 91啪亚洲精品| 超级砰砰砰97免费观看最新一期 | 婷婷色综合网| 精品欧美一区二区在线观看视频| 欧美日韩在线精品一区二区三区激情综合| 欧美超级乱淫片喷水| 四虎影院在线播放| 91精品国产欧美一区二区成人| 特黄视频免费看| 亚洲欧美日韩一区二区| 一道本在线观看| 国产精品一区三区| 天天爽天天爽夜夜爽| 亚洲一级一区| 色爽爽爽爽爽爽爽爽| 综合久久2o19| 天天操天天干天天| 国产女人18毛片水真多成人如厕 | 快播电影网址老女人久久| 久久视频精品在线| 成人免费在线电影| 26uuu精品一区二区在线观看| 精品国产一区久久久| 国精产品乱码一区一区三区四区| 欧美午夜在线一二页| 日韩伦人妻无码| 伊人开心综合网| 国产成人在线网址| 久久精品人人做人人爽人人| 黄色av电影网站| 国产毛片一区二区| 天堂在线中文在线| 蜜桃精品视频在线| 99视频精品免费| 亚洲在线电影| 日韩av黄色网址| 国产韩日影视精品| 精品久久久久久综合日本| 亚洲精品在线播放| 亚洲一区二区三区乱码aⅴ| 国产91亚洲精品久久久| 国产91精品最新在线播放| 最近高清中文在线字幕在线观看1| 欧美激情高清视频| 自由的xxxx在线视频| 不卡av电影在线观看| 黄色小网站在线观看| 日韩中文在线中文网三级| www.视频在线.com| 日韩中文字幕免费看| 亚洲天天影视| 综合网日日天干夜夜久久| 第一页在线观看| 国产亚洲人成网站在线观看| 国产小视频在线| 亚洲视频在线观看网站| 黄色av网站在线看| 在线成人中文字幕| 欧美日韩在线看片| 久色乳综合思思在线视频| 超碰caoporn久久| 久久99国产精品自在自在app| 污视频网站免费在线观看| 欧美国产日本在线| 美女高潮在线观看| 国产精品91视频| 祥仔av免费一区二区三区四区| 成人黄色av免费在线观看| 久久伊人久久| 国产aⅴ精品一区二区三区黄| 国产 日韩 欧美 综合 一区| 久久精精品视频| 日韩精品看片| 欧美交换配乱吟粗大25p| 亚洲激情二区| 日韩有码免费视频| 精品影院一区二区久久久| 亚洲国产欧美日韩在线| yourporn久久国产精品| 色欲AV无码精品一区二区久久| 国产精品免费丝袜| 欧美日韩国产精品综合| 韩曰欧美视频免费观看| 中文字幕乱码人妻二区三区| 制服.丝袜.亚洲.中文.综合| 成人小说亚洲一区二区三区| 亚洲欧美国产视频| 巨大荫蒂视频欧美大片| 久久久久久久久久久成人| 欧美成人a交片免费看| 国产一区视频在线播放| 成人看片爽爽爽| 无码免费一区二区三区免费播放 | av在线播放一区二区三区| 美女100%无挡| 亚洲精品亚洲人成人网| 中文字幕在线播| 日韩亚洲欧美中文三级| 日色在线视频| 欧美剧在线观看| 欧美三级精品| a级国产乱理论片在线观看99| 久草成人资源| 日韩人妻一区二区三区蜜桃视频| 麻豆精品网站| 成人免费播放视频| 中文字幕乱码亚洲精品一区| 久久久久久久久久综合| 欧美三级韩国三级日本三斤| 狠狠躁日日躁夜夜躁av| www.久久撸.com| 97久久香蕉国产线看观看| aa日韩免费精品视频一| 日韩理论电影| 丰满少妇被猛烈进入高清播放| 国产精品资源网| 中文字幕网站在线观看| 亚洲电影一级黄| 国产人妻精品一区二区三区| 国产一区二区三区在线看| 丁香花高清在线观看完整版| 成人激情视频在线播放| 国产成人手机高清在线观看网站| 人妻av无码专区| 强制捆绑调教一区二区| 无码熟妇人妻av| 午夜视频一区二区| 亚洲国产精品suv| 久热精品视频在线| 日本免费成人| 婷婷久久伊人| 日本一不卡视频| 欧美图片第一页| 欧美日韩精品在线视频| 亚洲av少妇一区二区在线观看 | 免费成人av在线播放| aaaaaav| 亚洲国产精品欧美一二99| 国产成人精品无码高潮| 久久精品美女视频网站| 巨大黑人极品videos精品| 日韩视频在线播放| 天堂久久一区二区三区| 五级黄高潮片90分钟视频| 精品日韩中文字幕| 午夜小视频在线播放| 91国在线精品国内播放| 欧美色图五月天| 欧美 丝袜 自拍 制服 另类| 99在线热播精品免费| 日本污视频在线观看| 欧美精品一区二区三区四区| 蜜桃传媒在线观看免费进入 | 丝袜制服一区二区三区| 久久久影视传媒| 亚洲av无码精品一区二区| 亚洲网站视频福利| 精品69视频一区二区三区| 一区二区三区四区欧美日韩| 麻豆精品蜜桃视频网站| 肉色超薄丝袜脚交69xx图片| 制服视频三区第一页精品| 污污视频在线看| 精品久久久久亚洲| 三级不卡在线观看| 激情五月激情综合| 91精品国产91久久久久久最新毛片 | 爱高潮www亚洲精品| 欧洲精品一区二区三区久久| 95精品视频在线| 久久久久久亚洲av无码专区| 在线观看国产成人av片| www.成人| 欧美成人三级在线视频| 久久久91精品国产一区二区精品 | 国产精品99久久久久久宅男| 久久久久久欧美精品se一二三四| 亚洲国产精品视频在线观看| 女人让男人操自己视频在线观看| 欧美亚洲免费高清在线观看| 久久精品国产**网站演员| 欧美被狂躁喷白浆精品| 亚洲精品久久久久久久久久久 | 一本色道久久综合亚洲精品不卡| 亚洲熟妇一区二区三区| 欧美日本国产一区| 国产蜜臀av在线播放| 欧美日韩一区二区三区在线观看免| 免费成人在线观看视频| 国产一级片免费观看| 亚洲欧美在线看| 久久久久久久久成人| a√天堂在线观看| 中文字幕一区二区三区四区不卡| 午夜老司机福利| 国产精品成人va在线观看| 欧美日韩国产精品一区二区亚洲| 欧美做受喷浆在线观看| 精品污污网站免费看| 免费在线观看的电影网站| 日韩欧美亚洲区| 成人免费看视频| 在线视频你懂得| 欧美做受高潮1| 欧美日韩第一区| 一二三四国产精品| 欧美va亚洲va在线观看蝴蝶网|