JavaScript設(shè)計(jì)模式--五大設(shè)計(jì)原則

設(shè)計(jì)模式導(dǎo)航


\bullet 設(shè)計(jì)模式的好處

? ? 復(fù)用据德、易讀证芭、拓展

\bullet 五大原則

? ? 開閉煤傍、接口隔離朦肘、里氏替換饭弓、依賴倒置、單一職責(zé)

\bullet 開閉原則(hoc)

? ? 簡寫:?ocp

? ? 要求:對拓展開發(fā)媒抠,對修改關(guān)閉

? ? 為了迎接元旦弟断,產(chǎn)品想搞點(diǎn)新花樣,把a(bǔ)pp里的a模塊高亮趴生,對b模塊做打折處理

? ? 則代碼如下

? ? 后來公司做年終總結(jié)阀趴,發(fā)現(xiàn)c模塊一直在虧錢昏翰,故打算將其停用掉:置灰且顯示停止發(fā)售

? ? 也很easy,如下即可

? ? 那要為了迎接春節(jié)又要將d特殊處理呢刘急?元宵處理c呢......棚菊,你要說接著if...else,那我敬你是英雄叔汁,并奉上666

? ? 思考......

? ? 開閉原則要求關(guān)閉修改统求,這意味著我們不能直接去動原有的邏輯,那么是否可以把這些共有操作做一下歸類呢攻柠?不管是置灰或者高亮或者默認(rèn)顏色球订,都是對顏色的控制,所以可以提取一個(gè)setColor方法專門來做這件事瑰钮;對于打折或停止銷售或顯示的金額都是一個(gè)div的文本顯示冒滩,所以可以使用setSalary來做這件事

? ? 如此,對于新的mode來說浪谴,其天生就具有這兩個(gè)方法开睡,且可以在自身覆蓋或增加自身的其他新的行為

\bullet 單一職責(zé)(function)

? ??簡寫:?srp

? ? 要求:模塊之間相互隔離,函數(shù)之間互不影響

? ? 比如我們做一個(gè)時(shí)間相關(guān)的下拉框苟耻,下拉框和時(shí)間就可以單獨(dú)分開篇恒,使用moment來處理時(shí)間的轉(zhuǎn)化

? ? 又比如對于開閉中列舉的例子而言,假設(shè)有模塊d不僅要高亮凶杖,而且要打折的話胁艰,則setColor和setSalary就是符合單一職責(zé)的。又或者是這樣的

\bullet 依賴倒置(vue.use)

? ??簡寫:?dip

? ? 要求:上層不應(yīng)該依賴下層實(shí)現(xiàn)

? ? 假設(shè)我們要實(shí)現(xiàn)一個(gè)分享功能智蝠,我們可以這么寫

? ? 這沒毛病腾么,將Share功能單獨(dú)分開這很"單一職責(zé)",通過在Mode內(nèi)重寫shareToWx也實(shí)現(xiàn)了"開閉"

? ? 后來杈湾,產(chǎn)品突然發(fā)現(xiàn)解虱,在當(dāng)下網(wǎng)購盛行,網(wǎng)民習(xí)慣性看評價(jià)下菜漆撞,光分享出去好像沒什么卵用殴泰,那...加個(gè)評價(jià)?

? ? 好嘛浮驳,評價(jià)不是我寫的悍汛,我就調(diào)一下,那一秒我就給他寫完了

? ? 可是至会,這時(shí)候我有點(diǎn)頭疼离咐,倒不是bug多,而是我發(fā)現(xiàn)還可以優(yōu)化:新用戶注冊直接給個(gè)折扣會不會更好奋献?健霹,如果產(chǎn)品也這樣想旺上,那我豈不是還要再改,WTMD...

? ? 我貌似糖埋,對下層產(chǎn)生了依賴...

? ? 如果能像vue一樣提供一個(gè)插件機(jī)制就好了宣吱,不管傳遞給vue的插件如何改變,有多少個(gè)瞳别,都能夠接收征候,并在適當(dāng)?shù)臅r(shí)候提供給頁面調(diào)用,而不是在vue內(nèi)部去保留一份實(shí)現(xiàn)

\bullet 接口隔離

? ??簡寫:?isp

????像elementUI祟敛、antd這些組件庫疤坝,都提供了按需加載能力,這個(gè)其實(shí)從某種意義上來說就是接口隔離馆铁,因?yàn)閷τ?b>不需要的功能我們必要都跑一遍

\bullet 里氏替換

? ??簡寫: lsp

? ? 要求:子類可以繼承并拓展父類跑揉,但不能破壞父類的執(zhí)行流程,子類能出現(xiàn)的地方父類也可以

? ? 父類就像是在擬大綱一樣埠巨,它實(shí)現(xiàn)了一個(gè)api的實(shí)現(xiàn)流程历谍。子類可以直接使用也可以進(jìn)行重寫,但是不能破壞整體流程辣垒,如下望侈,只有Fp是符合的


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勋桶,隨后出現(xiàn)的幾起案子脱衙,更是在濱河造成了極大的恐慌,老刑警劉巖例驹,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捐韩,死亡現(xiàn)場離奇詭異,居然都是意外死亡眠饮,警方通過查閱死者的電腦和手機(jī)奥帘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門铜邮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仪召,“玉大人,你說我怎么就攤上這事松蒜∪用” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵秸苗,是天一觀的道長召娜。 經(jīng)常有香客問我,道長惊楼,這世上最難降的妖魔是什么玖瘸? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任秸讹,我火速辦了婚禮,結(jié)果婚禮上雅倒,老公的妹妹穿的比我還像新娘璃诀。我一直安慰自己,他們只是感情好蔑匣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布劣欢。 她就那樣靜靜地躺著,像睡著了一般裁良。 火紅的嫁衣襯著肌膚如雪凿将。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天价脾,我揣著相機(jī)與錄音牧抵,去河邊找鬼。 笑死侨把,一個(gè)胖子當(dāng)著我的面吹牛灭忠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播座硕,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼弛作,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了华匾?” 一聲冷哼從身側(cè)響起映琳,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜘拉,沒想到半個(gè)月后萨西,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旭旭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年谎脯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片持寄。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡源梭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稍味,到底是詐尸還是另有隱情废麻,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布模庐,位于F島的核電站烛愧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怜姿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一慎冤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沧卢,春花似錦粪薛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至熟空,卻和暖如春藤巢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背息罗。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工掂咒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迈喉。 一個(gè)月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓绍刮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挨摸。 傳聞我的和親對象是個(gè)殘疾皇子孩革,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    極客學(xué)院Wiki閱讀 7,240評論 0 3
  • 不知不覺易趣客已經(jīng)在路上走了快一年了膝蜈,感覺也該讓更多朋友認(rèn)識知道易趣客,所以就謝了這篇簡介熔掺,已做創(chuàng)業(yè)記事饱搏。 易趣客...
    Physher閱讀 3,410評論 1 2
  • 雙胎妊娠有家族遺傳傾向,隨母系遺傳置逻。有研究表明推沸,如果孕婦本人是雙胎之一,她生雙胎的機(jī)率為1/58券坞;若孕婦的父親或母...
    鄴水芙蓉hibiscus閱讀 3,696評論 0 2
  • 今天理好了行李鬓催,看到快要九點(diǎn)了,就很匆忙的洗頭洗澡报慕,(心存一份念想深浮,你總會打給我的??)然后把洗頭液當(dāng)成沐浴液了??压怠,...
    bevil閱讀 2,769評論 1 1
  • 那年我們15眠冈,像陽光一樣溫暖的年紀(jì)。每天我都會騎自行車上學(xué),路過田野蜗顽,工廠布卡,醫(yī)院,村莊雇盖,有微風(fēng)忿等,有陽光,有綠...
    木偶說愛你閱讀 2,521評論 0 3