JavaScript設計模式

JavaScript設計模式

JavaScript設計模式,共有兩部分。第一部分給出了實現具體設計模式所需要的面向對象特性的基礎知識,主要包括接口、封裝和信息隱藏、繼承、單體模式等內容。第二部分則專注於各種具體的設計模式及其在JavaScript語言中的套用,主要介紹了工廠模式、橋接模式、組合模式、門面模式等幾種常見的模式。

基本信息

內容簡介

JavaScript設計模式

《JavaScript設計模式》共有兩部分。第一部分給出了實現具體設計模式所需要的面向對象特性的基礎知識,主要包括接口、封裝和信息隱藏、繼承、單體模式等內容。第二部分則專注於各種具體的設計模式及其在JavaScript語言中的套用,主要介紹了工廠模式、橋接模式、組合模式、門面模式等幾種常見的模式。為了讓每一章中的示例都儘可能地貼近實際套用,書中同時列舉了一些JavaScript程式設計師最常見的任務,然後運用設計模式使其解決方案變得更模組化、更高效並且更易維護,其中較為理論化的例子則用於闡明某些要點。《JavaScript設計模式》適合各層次的Web前端開發人員閱讀和參考,也適合有C++/Java/C#背景的伺服器端程式設計師學習。

作者簡介

RossHarmes,資深Web程式設計師,有10多年編程經驗。現任Yahoo前端工程師。他是開源圖片部落格軟體birch的開發者。

DustinDiaz,資深Web程式設計師,現任Google用戶界面工程師。新一代JavaScript框架DEDlChain(兼具jQuery和YUI的優勢)的開發者。他還是一位中長跑健將,800米跑曾經在全美國排名第13。擁有西班牙語學士學位。

編輯推薦

《JavaScript設計模式》中,Google和Yahoo公司的兩位資深Web專家對此給出了擲地有聲的肯定回答。作者針對常見的開發任務,從YUI等實戰代碼中取材,提供了專家級的解決方案,不僅透徹剖析了JavaScript扣的面向對象編程,而且深入探討了如何用JavaScript實現以前只在伺服器端套用的設計模式,如何根據實際場景選擇恰當的設計模式,開發出高質量的企業級代碼。《JavaScript設計模式》充分證明:JavaScript不僅毫不遜色於其他高級語言,已經是一種成熟且強大的面向對象語言,而且還擁有Java和C++等語言不具備的面向未來的特性,因此更加靈活、更富於表現力。

Web套用取代桌面程式的時代已經到來!作為Web前端的核心技術,JavaScript的重要性不言而喻,它有望成為下一代統治性程式語言。但由於業界長期的誤解和濫用,也有不少人仍然對此半信半疑。那么,JavaScript到底能否當此大任呢?無論是前端工程師,還是伺服器端程式設計師,通過《JavaScript設計模式》都將使自己的JavaScript功力提升到前所未有的高度。

目錄

第一部分面向對象的JavaScript

第1章富有表現力的JavaScript

1.1JavaScript的靈活性

1.2弱類型語言

1.3函式是一等對象

1.4對象的易變性

1.5繼承

1.6JavaScript中的設計模式

1.7小結

第2章接口

2.1什麼是接口

2.1.1接口之利

2.1.2接口之弊

2.2其他面向對象語言處理接口的方式

2.3在JavaScript中模仿接口

2.3.1用注釋描述接口

2.3.2用屬性檢查模仿接口

2.3.3用鴨式辨型模仿接口

2.4本書採用的接口實現方法

2.5Interface類

2.5.1Interface類的使用場合

2.5.2Interface類的用法

2.5.3示例:使用Interface類

2.6依賴於接口的設計模式

2.7小結

第3章封裝和信息隱藏

3.1信息隱藏原則

3.1.1封裝與信息隱藏

3.1.2接口扮演的角色

3.2創建對象的基本模式

3.2.1門戶大開型對象

3.2.2用命名規範區別私用成員

3.2.3作用域、嵌套函式和閉包

3.2.4用閉包實現私用成員

3.3更多高級對象創建模式

3.3.1靜態方法和屬性

3.3.2常量

3.3.3單體和對象工廠

3.4封裝之利

3.5封裝之弊

3.6小結

第4章繼承

4.1為什麼需要繼承

4.2類式繼承

4.2.1原型鏈

4.2.2extend函式

4.3原型式繼承

4.3.1對繼承而來的成員的讀和寫的不對等性

4.3.2clone函式

4.4類式繼承和原型式繼承的對比

4.5繼承與封裝

4.6摻元類

4.7示例:就地編輯

4.7.1類式繼承解決方案

4.7.2原型式繼承解決方案

4.7.3摻元類解決方案

4.8繼承的適用場合

4.9小結

第5章單體模式

5.1單體的基本結構

5.2劃分命名空間

5.3用作特定網頁專用代碼的包裝器的單體

5.4擁有私用成員的單體

5.4.1使用下劃線表示法

5.4.2使用閉包

5.4.3兩種技術的比較

5.5惰性實例化

5.6分支

5.7示例:用分支技術創建XHR對象

5.8單體模式的適用場合

5.9單體模式之利

5.10單體模式之弊

5.11小結

第6章方法的鏈式調用

6.1調用鏈的結構

6.2設計一個支持方法鏈式調用的JavaScript庫

6.3使用回調從支持鏈式調用的方法獲取數據

6.4小結

第二部分設計模式

第7章工廠模式

7.1簡單工廠

7.2工廠模式

7.3工廠模式的適用場合

7.3.1動態實現

7.3.2節省設定開銷

7.3.3用許多小型對象組成一個大對象

7.4示例:XHR工廠

7.4.1專用型連線對象

7.4.2在運行時選擇連線對象

7.5示例:RSS閱讀器

7.6工廠模式之利

7.7工廠模式之弊

7.8小結

第8章橋接模式

8.1示例:事件監聽器

8.2橋接模式的其他例子

8.3用橋接模式聯結多個類

8.4示例:構建XHR連線佇列

8.4.1添加核心工具

8.4.2添加觀察者系統

8.4.3開發佇列的基本框架

8.4.4實現佇列

8.4.5哪些地方用了橋接模式

8.5橋接模式的適用場合

8.6橋接模式之利

8.7橋接模式之弊

8.8小結

第9章組合模式

9.1組合對象的結構

9.2使用組合模式

9.3示例:表單驗證

9.3.1匯合起來

9.3.2向FormItem添加操作

9.3.3向層次體系中添加類

9.3.4添加更多操作

9.4示例:圖片庫

9.5組合模式之利

9.6組合模式之弊

9.7小結

第10章門面模式

10.1一些你可能已經知道的門面元素

10.2JavaScript庫的門面性質

10.3用作便利方法的門面元素

10.4示例:設定HTML元素的樣式

10.5示例:設計一個事件工具

10.6實現門面模式的一般步驟

10.7門面模式的適用場合

10.8門面模式之利

10.9門面模式之弊

10.10小結

第11章適配器模式

11.1適配器的特點

11.2適配原有實現

11.3示例:適配兩個庫

11.4示例:適配電子郵件API

11.4.1用適配器包裝Web郵件API

11.4.2從fooMail轉向dedMail

11.5適配器模式的適用場合

11.6適配器模式之利

11.7適配器模式之弊

11.8小結

第12章裝飾者模式

12.1裝飾者的結構

12.1.1接口在裝飾者模式中的角色

12.1.2裝飾者模式與組合模式的比較

12.2裝飾者修改其組件的方式

12.2.1在方法之後添加行為

12.2.2在方法之前添加行為

12.2.3替換方法

12.2.4添加新方法

12.3工廠的角色

12.4函式裝飾者

12.5裝飾者模式的適用場合

12.6示例:方法性能分析器

12.7裝飾者模式之利

12.8裝飾者模式之弊

12.9小結

第13章享元模式

13.1享元的結構

13.2示例:汽車登記

13.2.1內在狀態和外在狀態

13.2.2用工廠進行實例化

13.2.3封裝在管理器中的外在狀態

13.3管理外在狀態

13.4示例:Web日曆

13.4.1把日期對象轉化為享元

13.4.2外在數據保存在哪裡

13.5示例:工具提示對象

13.5.1未經最佳化的Tooltip類

13.5.2作為享元的Tooltip

13.6保存實例供以後重用

13.7享元模式的適用場合

13.8實現享元模式的一般步驟

13.9享元模式之利

13.10享元模式之弊

13.11小結

第14章代理模式

14.1代理的結構

14.1.1代理如何控制對本體的訪問

14.1.2虛擬代理、遠程代理和保護代理

14.1.3代理模式與裝飾者模式的比較

14.2代理模式的適用場合

14.3示例:網頁統計

14.4包裝Web服務的通用模式

14.5示例:目錄查找

14.6創建虛擬代理的通用模式

14.7代理模式之利

14.8代理模式之弊

14.9小結

第15章觀察者模式

15.1示例:報紙的投送

15.1.1推與拉的比較

15.1.2模式的實踐

15.2構建觀察者API

15.2.1投送方法

15.2.2訂閱方法

15.2.3退訂方法

15.3現實生活中的觀察者

15.4示例:動畫

15.5事件監聽器也是觀察者

15.6觀察者模式的適用場合

15.7觀察者模式之利

15.8觀察者模式之弊

15.9小結

第16章命令模式

16.1命令的結構

16.1.1用閉包創建命令對象

16.1.2客戶、調用者和接收者

16.1.3在命令模式中使用接口

16.2命令對象的類型

16.3示例:選單項

16.3.1選單組合對象

16.3.2命令類

16.3.3匯合起來

16.3.4添加更多選單項

16.4示例:取消操作和命令日誌

16.4.1使用命令日誌實現不可逆操作的取消

16.4.2用於崩潰恢復的命令日誌

16.5命令模式的適用場合

16.6命令模式之利

16.7命令模式之弊

16.8小結

第17章職責鏈模式

17.1職責鏈的結構

17.2傳遞請求

17.3在現有層次體系中實現職責鏈

17.4事件委託

17.5職責鏈模式的適用場合

17.6圖片庫的進一步討論

17.6.1用職責鏈提高組合對象的效率

17.6.2為圖片添加標籤

17.7職責鏈模式之利

17.8職責鏈模式之弊

17.9小結

相關詞條

相關搜尋

熱門詞條

聯絡我們