背景介紹
之前在閱讀《JavaScript設(shè)計(jì)模式和開發(fā)實(shí)踐》這本書的時(shí)候,收貨頗豐,學(xué)習(xí)了設(shè)計(jì)模式在很多場(chǎng)景下的應(yīng)用。
但也是因?yàn)闀蠄?chǎng)景過多,所以當(dāng)記不清某一種設(shè)計(jì)模式的時(shí)候,翻書溫習(xí)復(fù)雜案例的成本是相對(duì)較高的。有時(shí)候,只需要一段經(jīng)典、簡(jiǎn)潔的demo就可以迅速回顧起精髓,在快速業(yè)務(wù)開發(fā)中,這是個(gè)比較經(jīng)濟(jì)的做法。
除此之外,當(dāng)主要工作語言發(fā)生變化的時(shí)候(例如:js -> python),簡(jiǎn)潔的demo更能幫助開發(fā)者快速回憶某種設(shè)計(jì)模式的精髓和實(shí)現(xiàn)思路,方便開發(fā)者根據(jù)語言特性再做實(shí)現(xiàn)。
因此,對(duì)于比較重要的18種設(shè)計(jì)模式,我都挑選了它的一種經(jīng)典應(yīng)用,并且盡量使用ES6的語法和編程習(xí)慣來進(jìn)行實(shí)現(xiàn)。 前10個(gè)設(shè)計(jì)模式還提供了Python3的實(shí)現(xiàn)版本(后來比較忙,遂放棄)。
文章地址一共記錄了18個(gè)設(shè)計(jì)模式,部分文章發(fā)到了掘金,由于精力有限,后面幾篇文章就直接放在了Github倉庫 / 個(gè)人博客
單例模式:https://godbmw.com/passages/2018-10-23-singleton-pattern/
策略模式: https://godbmw.com/passages/2018-10-25-stragegy-pattern/
代理模式: https://godbmw.com/passages/2018-11-01-proxy-pattern/
迭代器模式: https://godbmw.com/passages/2018-11-06-iter-pattern/
訂閱-發(fā)布模式: https://godbmw.com/passages/2018-11-18-publish-subscribe-pattern/
命令模式: https://godbmw.com/passages/2018-11-25-command-pattern/
組合模式: https://godbmw.com/passages/2018-12-12-composite-pattern/
享元模式:https://godbmw.com/passages/2018-12-16-flyweight-pattern/
責(zé)任鏈模式: https://godbmw.com/passages/2019-01-07-chain-of-responsibility-pattern/
裝飾者模式: https://godbmw.com/passages/2019-01-12-decorator-pattern/
狀態(tài)模式: https://godbmw.com/passages/2019-01-16-state-pattern/
適配器模式: https://godbmw.com/passages/2019-01-17-adapter-pattern/
橋接模式: https://godbmw.com/passages/2019-01-19-bridge-pattern/
解釋器模式: https://godbmw.com/passages/2019-01-25-interpreter-pattern/
備忘錄模式: https://godbmw.com/passages/2019-01-26-memento-pattern/
模板模式: https://godbmw.com/passages/2019-01-31-template-pattern/
工廠模式: https://godbmw.com/passages/2019-03-31-factory-pattern/
抽象工廠模式: https://godbmw.com/passages/2019-04-01-abstract-factory-pattern/
放在最后其實(shí)整理這些的原因還有一個(gè),就是為了準(zhǔn)備今年春招的面試。然后過了騰訊的校招和阿里的前三面發(fā)現(xiàn),竟然沒有專門問到設(shè)計(jì)模式相關(guān)知識(shí)!
但回首看,系統(tǒng)地學(xué)習(xí)、理智地使用設(shè)計(jì)模式(不是為了用而用),確實(shí)能提升代碼的可讀性,實(shí)現(xiàn)業(yè)務(wù)解耦。而在寫這些文章的過程中,每種設(shè)計(jì)模式自己也是會(huì)找很多的實(shí)現(xiàn)(包括不限于python、java、c++)來參考,探索式學(xué)習(xí)還是蠻有趣的。
盡管如此,有2篇文章的瑕疵還是很多,希望您抱著交流的心態(tài)來閱讀,如有不當(dāng),歡迎指出、共同提升。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/103446.html
摘要:在實(shí)際開發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就派上了大用場(chǎng),我們把定義好的按鈕組件導(dǎo)出,在全局引用,就可以在其他組件隨意使用啦,這樣可以大幅度 在實(shí)際開發(fā)項(xiàng)目中,有時(shí)我們會(huì)用到自定義按鈕;因?yàn)橐粋€(gè)項(xiàng)目中,眾多的頁面,為了統(tǒng)一風(fēng)格,我們會(huì)重復(fù)用到很多相同或相似的按鈕,這時(shí)候,自定義按鈕組件就...
摘要:代碼整潔之道整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低幾率。另外這不是強(qiáng)制的代碼規(guī)范,就像原文中說的,。里式替換原則父類和子類應(yīng)該可以被交換使用而不會(huì)出錯(cuò)。注釋好的代碼是自解釋的。 JavaScript代碼整潔之道 整潔的代碼不僅僅是讓人看起來舒服,更重要的是遵循一些規(guī)范能夠讓你的代碼更容易維護(hù),同時(shí)降低bug幾率。 原文clean-c...
摘要:接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目第一題考點(diǎn)作用域,運(yùn)算符栗子都會(huì)進(jìn)行運(yùn)算,但是最后之后輸出最后一個(gè)也就是那么其實(shí)就是而且是個(gè)匿名函數(shù),也就是屬于,就輸出第二和第三個(gè)都是類似的,而且作用域是都是輸出最后一個(gè)其實(shí)就 接著我之前寫的一篇有關(guān)前端面試題的總結(jié),分享幾道比較經(jīng)典的題目: 第一題: showImg(https://segmentfault.com/im...
對(duì)比內(nèi)容UCloudStackZStackVMwareQingCloud騰訊TStack華為云Stack優(yōu)勢(shì)總結(jié)?基于公有云自主可控?公有云架構(gòu)私有化部署?輕量化/輕運(yùn)維/易用性好?政府行業(yè)可復(fù)制案例輕量化 IaaS 虛擬化平臺(tái)?輕量化、產(chǎn)品成熟度高?業(yè)內(nèi)好評(píng)度高?功能豐富、交付部署快?中小企業(yè)案例多全套虛擬產(chǎn)品及云平臺(tái)產(chǎn)品?完整生態(tài)鏈、技術(shù)成熟?比較全面且健全的渠道?產(chǎn)品成熟度被市場(chǎng)認(rèn)可,市場(chǎng)占...
摘要:能跨平臺(tái)地設(shè)置及使用環(huán)境變量讓這一切變得簡(jiǎn)單,不同平臺(tái)使用唯一指令,無需擔(dān)心跨平臺(tái)問題安裝方式改寫使用了環(huán)境變量的常見如在腳本多是里這么配置運(yùn)行,這樣便設(shè)置成功,無需擔(dān)心跨平臺(tái)問題關(guān)于跨平臺(tái)兼容,有幾點(diǎn)注意 cross-env能跨平臺(tái)地設(shè)置及使用環(huán)境變量, cross-env讓這一切變得簡(jiǎn)單,不同平臺(tái)使用唯一指令,無需擔(dān)心跨平臺(tái)問題 1、npm安裝方式 npm i --save-de...
摘要:引入的模塊引入的使用將打包打包的拆分將一部分抽離出來物理地址拼接優(yōu)化打包速度壓縮代碼,這里使用的是,同樣在的里面添加 const path = require(path); //引入node的path模塊const webpack = require(webpack); //引入的webpack,使用lodashconst HtmlWebpackPlugin = require(ht...
閱讀 3580·2021-10-13 09:39
閱讀 1529·2021-10-08 10:05
閱讀 2356·2021-09-26 09:56
閱讀 2374·2021-09-03 10:28
閱讀 2762·2019-08-29 18:37
閱讀 2091·2019-08-29 17:07
閱讀 660·2019-08-29 16:23
閱讀 2264·2019-08-29 11:24