常見的幾種JavaScript設計模式

2021-08-19 05:54:53 字數 1452 閱讀 5103

設計模式是在軟體開發中,經過驗證的,用於解決在特定環境下,重複出現的特定的問題的解決方案。

在編寫js**的過程中,運用一定的設計模式可以讓我們的**更加優雅、靈活。

每個設計模式的構成如下:

1、模式名稱:模式的乙個好記的名字

2、環境和問題:描述在什麼環境下,出現什麼特定的問題

3、解決方案:描述如何解決問題

4、效果:描述應用模式後的效果,以及可能帶來的問題

簡單地說,模式就是一些經驗,一套場景/問題+解決方案。

為什麼要學習設計模式?

設計模式的種類較多,各個模式都有它對應的場景,不能武斷地認為某個模式就是最優解決方案。

通過學習這些設計模式,讓你找到「封裝變化」、「松耦合」、「針對介面程式設計」的感覺,從而設計出易維護、易復用、擴充套件性好、靈活性足的程式。

通過學習設計模式讓你領悟物件導向程式設計的思想(solid),到最後就可以拋棄設計模式。

把這些思想應用在你的**中,寫出高內聚、低耦合、可擴充套件、易維護的**了。

此時已然是心中無設計模式,而處處是設計模式了。

這就是學習設計模式的目的。

常見的幾種設計模式

單例模式

之所以叫做單例模式是因為它限定對於乙個類,它他只允許有乙個例項化物件。

經典的實現方式是,建立乙個類,這個類包含乙個方法,這個方法在沒有物件存在的情況下,將會建立乙個新的例項物件。

如果物件存在,這個方法只是返回這個物件的引用。

介面卡模式

將乙個類(物件)的介面(方法或屬性)轉化成客戶希望的另外乙個介面。

介面卡模式使得原本由於介面不相容而不能一起工作的那些類(物件)可以一起工作。

觀察者模式

乙個或者更多的觀察者對乙個被觀察者的狀態感興趣,將自身的這種興趣通過附著自身的方式註冊在被觀察者身上。

當被觀察者發生變化,而這種便可也是觀察者所關心的,就會產生乙個通知,這個通知將會被送出去,最後將會呼叫每個觀察者的更新方法。

當觀察者不在對被觀察者的狀態感興趣的時候,它們只需要簡單的將自身剝離即可。

**模式

把乙個物件的訪問交給另乙個物件來操作。

為了保證當前物件的單一職責,而需要建立另乙個物件來處理呼叫當前物件之前的一些邏輯以提高**的效率,狀態判斷等。

模式並不是我們要追求的目標,我們的目標是寫出有生氣的**,以有生氣的**為目標去寫,你會發現有一些模式會自然而地出現在你的**中。

這才是模式該用到的時候。

而且隨 著你經驗的增加,你會發現有一些新的模式自然產生,它與你用的語言,與你的所開發的應用,甚至與你的性格、信仰都有關係。

這時就你超越了大牛,擁有了你自己的模式語言,寫出了具備無名特質的**,踏上了屬於你自己的程式設計永恆之道……

JavaScript版幾種常見排序演算法

說明 個人理解 一些排序演算法 js 利用sort進行排序 systemsort function array 氣泡排序 bubblesort function array return array 快速排序 quicksort function array var key array i var ...

javascript 的幾種排序方法

所謂排序,就是要整理檔案中的記錄,使之按關鍵字遞增 或遞減 次序排列起來。其確切定義如下 輸入 n個記錄r1,r2,rn,其相應的關鍵字分別為k1,k2,kn。輸出 ril,ri2,rin,使得ki1 ki2 kin。或ki1 ki2 kin 這裡,我們簡單介紹幾種排序方法,直接插入排序 希兒排序 ...

JavaScript實現的幾種排序

原理 氣泡排序的過程就是將陣列中相鄰的兩個元素進行比較,如果前面的元素比後面的元素要大交換位置,否則位置不變 舉個栗子 有陣列 arr 3,5,4,2,1 第一輪迴圈 3和5比較,3小於5兩者位置不變,接下來5和4比較,5大於4,兩者交換位置,接著5和2比較,5 2兩者交換位置,繼續5和1 比較 5...