Javascript設計模式

  • 單例模式

單例就是保證一個類只有一個實例,實現的方法一般是先判斷實例存在與否,如果存在直接返回,如果不存在就創建了再返回,這就確保了一個類只有一個實例對象。
如果一個函數需要對一個外部變量進行處理(多人協作的時候務必遵守全局變量的初始狀態的保持)if( 變量 有的話):{return 變量;}else(沒有的話){為了保持外部變量初始狀態的維持,在內部創建一個局部變量var 變量,然后創建閉包,將函數執行結果賦值給這個內部變量。}作用:創建閉包之后,內部變量很好的代替了全部變量實現效果,而且函數執行完畢之后,內部變量自動消失,保持了全局變量的初始化狀態,完美~

  • 簡單工廠模式

簡單工廠就是一個類的所有實例對象都有相同的接口,每個實例對象之間的不同依靠后期實例化類之后對象自身進行設計。構造函數就是一個典例。
構造函數中的this指向的是實例化出來的每個對象。
構造函數繼承的時候特別不方便,每個實例都共享構造函數里面的所有成員屬性和成員方法。
一般情況下構造函數函數名建議大寫,以示區別。

  • 觀察者模式

觀察者模式(也叫做發布者-訂閱者模式)js中的Dom事件是典例。『按鈕點擊alert123的一個案例』點擊相應函數已經被寫好,只有按鈕被點擊的時候才會去產生調用函數的指令。好萊塢名言『不要給我打電話, 我會給你打電話』。也就是一個復雜的東西被很好的分解成幾個部分,這幾個部分之間外部沒有緊密的聯系,唯一的聯系只是一個『信號』。訂閱者不需要去管發布者,就像這幾個部分之間的關系一樣。

  • 適配器模式

適配兩個接口,將兩個模塊之間很好的做了聯系,相關的變量,方法進行轉換,var my.變量 = function 適配器(he.變量)

  • 代理模式

是將對一個對象的訪問,交給另一個代理對象去操作
典例是因為性能問題使用代理模式的機會是非常多的。比如頻繁的訪問dom節點, 頻繁的請求遠程資源. 可以把操作先存到一個緩沖區, 然后自己選擇真正的觸發時機.

  • 外觀模式

外觀模式為函數和方法提供一個高級接口,更加便于外界的調用
一個典型例子:

var stopEvent = function( e ){   //同時阻止事件默認行為和冒泡
  e.stopPropagation();
  e.preventDefault();
}
  • 策略模式

不是太懂。
但是典例是一個表單驗證的功能,需要同時驗證長度,類型,敏感詞等。將每種驗證方法都用策略模式封裝起來,使用的時候僅僅提供每種策略的名字。

  • 模板方法模式

模板方法強調父類去調用子類,而非反向的控制。父類固定的模板,使得子類去完善特定的功能,然后父類調用子類。

  • 中介模式

中介模式Controler,ABC通過W很好的與DEF聯系起來,但是ABC對DEF并沒有了解,全靠著W保持對雙方關系的維護。與代理模式的不同是代理模式通過W將A與B聯系起來,A必然知道B的一切。

  • 迭代器模式

迭代式模式提供一種方法來對一個集合里面的每個元素進行一定的操作,但是又不對外暴漏方法里面的表示。

  • 組合模式

組合模式相當于一個大樹,操作最上層的接口,對下層所有的成員進行相同的操作。與外觀模式不同的是比外觀模式對內部對象的操作更具有統一性,并沒有指明內部對象的具體名字。

  • 備忘錄模式

備忘錄模式經常用于頁面數據的緩存,比如一個分頁應用的控件,先去檢測先前的數據有沒有緩存在用戶的瀏覽器中,有的話直接調用,沒有的話在進行請求數據。

  • 職責鏈模式

職責鏈模式經常用于一級一級的請求。js中的事件冒泡就是作為一個職責鏈來實現的。一個事件在某個節點上被觸發,然后向根節點傳遞, 直到被節點捕獲。

  • 享元模式

共享嘛~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容