原文:深入理解JavaScript系列(31):設計模式之代理模式

介紹 代理,顧名思義就是幫助別人做事,GoF對代理模式的定義如下: 代理模式 Proxy ,為其他對象提供一種代理以控制對這個對象的訪問。 代理模式使得代理對象控制具體對象的引用。代理幾乎可以是任何對象:文件,資源,內存中的對象,或者是一些難以復制的東西。 正文 我們來舉一個簡單的例子,假如dudu要送酸奶小妹玫瑰花,卻不知道她的聯系方式或者不好意思,想委托大叔去送這些玫瑰,那大叔就是個代理 其實 ...

2012-02-29 09:03 22 19422 推薦指數:

查看詳情

深入理解JavaScript系列(29):設計模式之裝飾者模式

介紹 裝飾者提供比繼承更有彈性的替代方案。 裝飾者用用於包裝同接口的對象,不僅允許你向方法添加行為,而且還可以將方法設置成原始對象調用(例如裝飾者的構造函數)。 裝飾者用於通過重載方法的形式添加新功能,該模式可以在被裝飾者前面或者后面加上自己的行為以達到特定的目的。 正文 那么裝飾者模式 ...

Fri Feb 24 16:59:00 CST 2012 34 18643
深入理解JavaScript系列(33):設計模式之策略模式

介紹 策略模式定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化不會影響到使用算法的客戶。 正文 在理解策略模式之前,我們先來一個例子,一般情況下,如果我們要做數據合法性驗證,很多時候都是按照swith語句來判斷,但是這就帶來幾個問題,首先如果增加需求的話,我們還要再次 ...

Mon Mar 05 17:22:00 CST 2012 30 17308
深入理解JavaScript系列(34):設計模式之命令模式

介紹 命令模式(Command)的定義是:用於將一個請求封裝成一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或者記錄請求日志,以及執行可撤銷的操作。也就是說改模式旨在將函數的調用、請求和操作封裝成一個單一的對象,然后對這個對象進行一系列的處理。此外,可以通過調用實現具體函數的對象 ...

Thu Mar 08 17:13:00 CST 2012 9 12223
深入理解JavaScript系列(35):設計模式之迭代器模式

介紹 迭代器模式(Iterator):提供一種方法順序一個聚合對象中各個元素,而又不暴露該對象內部表示。 迭代器的幾個特點是: 訪問一個聚合對象的內容而無需暴露它的內部表示。 為遍歷不同的集合結構提供一個統一的接口,從而支持同樣的算法在不同的集合結構上進行操作。 遍歷的同時更改 ...

Fri Mar 09 16:46:00 CST 2012 12 11334
深入理解JavaScript系列(43):設計模式之狀態模式

介紹 狀態模式(State)允許一個對象在其內部狀態改變的時候改變它的行為,對象看起來似乎修改了它的類。 正文 舉個例子,就比如我們平時在下載東西,通常就會有好幾個狀態,比如准備狀態(ReadyState)、下載狀態(DownloadingState)、暫停狀態 ...

Wed Apr 18 14:56:00 CST 2012 13 12766
深入理解JavaScript系列(44):設計模式之橋接模式

介紹 橋接模式(Bridge)將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 正文 橋接模式最常用在事件監控上,先看一段代碼: 上述代碼,有個問題就是getBeerById必須要有瀏覽器的上下文才能使用,因為其內部使用了this.id這個屬性,如果沒用上下文,那就歇菜 ...

Thu Apr 19 15:08:00 CST 2012 14 13768
深入理解JavaScript系列(38):設計模式之職責鏈模式

介紹 職責鏈模式(Chain of responsibility)是使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系。將這個對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理他為止。 也就是說,請求以后,從第一個對象開始,鏈中收到請求的對象要么親自處 ...

Tue Apr 10 16:55:00 CST 2012 8 10911
深入理解JavaScript系列(40):設計模式之組合模式

介紹 組合模式(Composite)將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性。 常見的場景有asp.net里的控件機制(即control里可以包含子control,可以遞歸操作、添加、刪除子control),類似的還有DOM的機制 ...

Thu Apr 12 16:35:00 CST 2012 12 12100
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM