當我閱讀《JavaScript設計模式與開發實踐》時,我在想些什麼
寒假用angular和node開發了個人部落格網站。在過程中,學習了typescript,RxJs 和redux等等東西。最近又剛剛把《JavaScript設計模式與開發實踐》(一下簡稱《模式》)讀完。我喜歡在做做東西學學新知識後再去看書,在讀書的過程中思考自己剛剛實踐遇到過的困難或者是對一些技術困惑的地方,有時候因為書本的輔助作用,讓之前的一些困惑茅塞頓開。
當我閱讀《模式》時,我首先想到的是什麼是設計模式。我認為模式可以理解為形式,JavaScript設計模式可以理解為組織JavaScript程式碼以讓其實現某種特定需求的形式。正如手機又靜音,飛行,正常等等的模式可以切換,JavaScript設計模式也涉及到很多種(其實這裡需要指出的是設計模式其實是可以獨立於語言存在的,只是對於不同的語言,各種模式對應的實現方式有所差別並且各種模式的使用有所不同)。所以在程式設計過程中,我們使用的設計模式往往是多種模式混合使用,也就是各種設計模式往往不是互相排斥,而是互相補充或者獨立的。
此外,當我閱讀《模式》時,我還想到了ES6和typeScript。《模式》一書一開始上來就講解了關於JavaScript的面對物件,只是本書是基於ES5的,裡面的對於類,單體,私有變數和方法等等的實現還是有些複雜。這方面在ES6得到了極大的簡化。可以說ES6讓傳統的物件導向程式設計在JS中的實現更加容易。而說到物件導向的JS,我不禁想到了ts(typeScript),作為JS的超集,ts完全是以面對物件形式進行程式設計的,而且具備了型別檢驗。作為angular的首選語言,ts與angular的結合可以說是非常貼切。對於前端3大框架,很多人對於angular望而卻步,很大一部分原因是需要學習ts。其實作為JS超集,ts本身也是支援JS語法的。甚至可以再ts檔案中使用JS。因為接觸了面對物件程式設計方式之後,深刻體會到這種程式設計方式的好處,所以推薦大家可以嘗試一下angular這個框架。
《模式》一書涉及了很多種設計模式,單例,策略,代理,迭代,釋出-訂閱,命令,組合,責任鏈,裝飾者,狀態,介面卡等等模式。這裡我要拿出幾個說一說。首先是代理模式,自己最好的理解代理模式就是關於“翻牆”了,因為有自己搭建過梯子,瞭解了代理伺服器的概念,再借此類比代理模式可以說是非常恰當。接著是釋出-訂閱模式,釋出-訂閱模式可以說是在前端中經常使用到的,一個“click”事件就是一個釋出訂閱。當然,對我受益更多是理解RxJs。RxJs的應用場景與釋出訂閱模式的應用場景非常相似,可以說RxJs是對這種模式的工具化,當然,RxJs不僅限於此。接下來是責任鏈模式,相信用過jQuery的人都不陌生xx.xx.xx(""),這種程式設計風格。沒錯,這就是責任鏈模式的表現形式。最後是關於狀態模式,不知道你是否有狀態機這個概念。想想上學期自己學了關於VHDL的課程,狀態機是其中重要的程式設計形式。由此,我理解起狀態模式並不困難。所謂狀態模式,就是定義既定的若干種狀態(s1,s2,s3),然後物件只能在這些狀態中進行轉變(如:s1->s2->s3->s1,s3->s2->s1->s3)。其實JS有個工具包redux的核心思想也是狀態模式。有學習和了解過的應該可以體會到。
最後,再對《模式》本身簡單說說一下個人對這本書的看法。首先,我很喜歡這本書,雖然我不是第一次接觸設計模式,這也不是我看的第一本關於設計模式的書,但無疑的是,這本書裡面採用的例子在我開來都是非常生動形象而且非常貼切的。作者由淺入深,循循深入,理解起來非常輕鬆。雖然本書是關於ES5的,但它一點都還沒過時,仍然很值得一讀的。
以上。
相關文章
- JS單例模式《JavaScript設計模式與開發實踐》閱讀筆記JS單例JavaScript設計模式筆記
- 設計模式之單例模式(《JavaScript設計模式與開發實踐》讀書筆記)設計模式單例JavaScript筆記
- 像蓋房子一樣寫程式碼:當我以測試驅動開發的時候,我在想些什麼
- JavaScript設計模式與開發實踐筆記JavaScript設計模式筆記
- 《JavaScript設計模式與開發實踐》模式篇(2)—— 策略模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(6)—— 命令模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(3)—— 代理模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(11)—— 中介者模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(9)—— 享元模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(1)—— 單例模式JavaScript設計模式單例
- 《JavaScript設計模式與開發實踐》模式篇(4)—— 迭代器模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(8)—— 模板方法模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(7)—— 組合模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(13)—— 狀態模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(10)—— 職責鏈模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(5)—— 觀察者模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(14)—— 介面卡模式JavaScript設計模式
- 《JavaScript設計模式與開發實踐》模式篇(12)—— 裝飾者模式JavaScript設計模式
- JavaScript設計模式與實踐--代理模式JavaScript設計模式
- 當我們談論Virtual DOM時,我們在說什麼——etch原始碼解讀原始碼
- 當我討論遊戲是否“好玩”時我在說什麼?遊戲
- 當我們談論MOD時,我們在談論什麼?
- 當我們聊kubernetes operator時,我們在聊些什麼
- 當我談跑酷遊戲時,我在談些什麼遊戲
- 當我們在談論極簡時,我們在談論什麼
- javascript設計模式與開發實踐(二)- 封裝和原型模式JavaScript設計模式封裝原型
- JavaScript設計模式與實踐–工廠模式JavaScript設計模式
- JavaScript設計模式與實踐--工廠模式JavaScript設計模式
- 當我談 HTTP 時,我談些什麼?HTTP
- 當我們在談零信任時,我們談的是什麼?
- 當我們在討論遊戲社群時,我們在討論什麼?遊戲
- 當我們在聊 RN 時,我們在聊什麼 | 技術點評
- 當我們在談論HTTP快取時我們在談論什麼HTTP快取
- 當我們說開放世界的時候,我們到底在說些什麼?
- 【iOS】當我們在application:DidFinishLaunchWithOptions:中返回NO時會發生什麼iOSAPP
- 當提到“事件驅動”時,我們在說什麼?事件
- 《JavaScript設計模式與開發實踐》基礎篇(1)—— this、call 和 applyJavaScript設計模式APP
- 《JavaScript設計模式與開發實踐》最全知識點彙總大全JavaScript設計模式