亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
慕課專欄

目錄

索引目錄

JavaScript 設計模式精講

原價 ¥ 48.00

立即訂閱
01 開篇 : 為什么學習本專欄?
更新時間:2019-10-30 10:03:20
古之立大事者,不唯有超世之才,亦必有堅韌不拔之志。——蘇軾

1. 什么是設計模式

小時候打游戲,我們總是追求最快通關;朋友聚會,我們會拿出手機查看哪家店離得近,而且實惠又好吃;下班回寢室,我們總是選最便捷的路線坐車。我們總是追求一件事最優美最便捷的解決方法,也就是最佳實踐。

設計模式就相當于武功秘籍里面的招式,是先輩們總結出來的最佳實踐,如果在遇到合適的場景時施展,則事半功倍,以后擴展和閱讀都十分舒暢,如讀詩行,如沐春風。然而招式運轉在乎融會貫通、心領神會,臻至化境應當隨心所欲、如臂使指,遇到合適的場景使用合適的招式,才是正道。如果生搬硬套、為了用而用,則會提升代碼復雜度,反而讓團隊其他成員一臉懵,平白增加協作成本。

2. 學習設計模式的目的

JavaScript 是多模式混合的,面向對象,以原型為基礎,并擁有動態數據類型。一方面將函數看做一等公民,允許函數式編程的風格,另一方面,也不排斥傳統的面向對象方式進行開發,甚至在之后的 ES6+ 的標準中引入了面向對象相關的一些原生支持。

這使得 JavaScript 成為功能十分強大的語言,賦予開發者很大的開發靈活性,但同時也導致編程風格、習慣以及技術的碎片化,進而導致同一個功能實現的多樣化。這種情況下,對于這些傳統的、強面向對象的設計模式會有各種類型的實現,有時候你甚至會覺得其中的某些有點牽強。

但是這些并不妨礙使用 JavaScript 來表達設計模式的理念、它所要解決的問題,和它的核心思想,這才是我們所要關注的核心。

因此并不是所有設計模式都是適合 JavaScript 的,我們需要注意一些比較常見的設計模式,比如工廠模式、單例模式、發布 - 訂閱模式,而對于一些不那么常用的模式,則可以淺嘗輒止,吸收其主要思想即可。

另外由于原型模式在 JavaScript 內建了,這里就不單獨設置文章了。

3. 主題文章設置與索引

本專欄的知識體系與大綱使用思維導圖的形式整理如下:

圖片描述
專欄共 29 篇文章,分為 4 個部分:

基礎篇

在系統學習各設計模式之前,還需要先了解一下 JavaScript 學習離不開的基礎知識,比如 this、閉包與高階函數等相關知識,然后是面向對象風格相關的繼承等知識,這些都是學習設計模式的鋪墊。如果你已經對基礎篇相關知識點已經很了解,那么可以跳過,如果你覺得不夠了解,或者了解的還不完整,那么可以通過基礎篇的文章來復習一下。

創建型模式

創建型模式關注如何創建對象,主要特點是將對象的創建和使用分離。一般抽象了對象實例化的過程,用來幫助創建對象的實例。包括下面幾個小節:

  1. 單例模式: 保證一個類只有一個實例,并提供一個訪問它的全局訪問點;
  2. 工廠模式: 根據輸入的不同返回不同類的實例,一般用來創建同一類對象;
  3. 抽象工廠模式: 通過對類的工廠抽象,使其業務用于對產品類簇的創建;
  4. 建造者模式: 分步構建一個復雜對象,使得同樣的構建過程可以采用不同的表示;

結構型模式

結構型模式關注如何將對象按某種布局組成更大的結構。包括下面幾個小節:

  1. 代理模式: 為目標對象創造一個代理對象,以控制對目標對象的訪問;
  2. 享元模式: 運用共享技術來有效地支持大量細粒度對象的復用,減少創建的對象的數量;
  3. 適配器模式: 解決兩個軟件實體間接口不兼容的問題;
  4. 裝飾者模式: 向一個現有的對象添加新的功能,同時又不改變其結構;
  5. 外觀模式: 為多個復雜的子系統提供一個一致的接口,使這些子系統更加容易被訪問;
  6. 組合模式: 用小的子對象構建更大的對象,使得對單個對象和組合對象具有一致的訪問性;
  7. 橋接模式: 將類的抽象部分與實現部分分離,使它們可以獨立地變化;

行為型模式

行為型模式關注對象之間的通信,描述對象之間怎樣相互協作,以及怎樣分配職責。包括下面幾個小節:

  1. 發布 - 訂閱模式: 多個對象間存在一對多關系,當一個對象發生改變時,把這種改變通知給其他多個對象,從而影響其他對象的行為;
  2. 策略模式: 定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換;
  3. 狀態模式: 允許一個對象在其內部狀態發生改變時改變其行為能力;
  4. 模板方法模式: 定義一個操作中的算法骨架,而將算法的一些步驟延遲到子類中,使得子類可以不改變該算法結構的情況下重定義該算法的某些特定步驟;
  5. 迭代器模式: 提供一種方法來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示;
  6. 命令模式: 將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開;
  7. 職責鏈模式: 把請求從鏈中的一個對象傳到下一個對象,直到請求被響應為止;
  8. 中介者模式: 定義一個中介對象來簡化原有對象之間的復雜耦合關系;

一些其他模式

一些其他的模式。包括下面幾個小節:

  1. MVC、MVP、MVVM: 用于系統分層,降低層間耦合;
  2. 模塊模式: 將內部的屬性和方法隱藏,僅暴露需要暴露的部分;
  3. 鏈模式: 通過在對象方法中將當前對象返回,實現對同一個對象的多個方法的鏈式調用;
  4. 中間件: 處于操作系統和應用程序之間的軟件,來完成對任何數據的預處理和后處理;
}
立即訂閱 ¥ 48.00

你正在閱讀課程試讀內容,訂閱后解鎖課程全部內容

千學不如一看,千看不如一練

手機
閱讀

掃一掃 手機閱讀

JavaScript 設計模式精講
立即訂閱 ¥ 48.00

舉報

0/150
提交
取消