最近在學習JavaScript
設計模式,對於剛剛起步的小白來講,對有些東西仍是很模糊的,因此整理成書面的形式,以避免之後忘記,能夠反覆的看一下。程序員
什麼是設計模式?
模式是一種可複用的解決方案,可用於解決項目開發設計中遇到的常見問題,比較咱們在編寫JavaScript
應用程序的實例中。咱們定義一個模板,這個模板能夠對應多種狀況,設計模式也是如此。可是, 你不能像使用現成的函數或程序庫那樣, 拿來某個模式就將其套用到本身的程序中。 模式並非一段特定的代碼, 而是用於解決特定問題的通常性概念。面試
大部分模式都有正規的描述方式, 以便在不一樣狀況下使用。 模式的描述一般會包括如下部分:算法
部分模式介紹中還列出其餘的一些實用細節,例如模式的適用性、實現步驟以及與其餘模式的關係。編程
設計模式類別
設計模式以類型劃分主要分爲三大類型,創造型設計模式、結構型設計模式、行爲設計模式,三種類型設計模式中又包含了更多的是設計模式。設計模式
1、創造型設計模式框架
建立型設計模式是一類處理對象建立的設計模式,經過某種方式控制對象的建立來避免基本對象建立時致使設計上的問題或增長設計上的複雜度。編程語言
創造模式包括:函數
2、結構型設計模式工具
結構型模式與對象組合有關,一般能夠用戶找出在不一樣對象之間創建關係的簡單方法。這種模式有助於確保在程序某一部分發生變化時,系統的整個結構無需同時改變,同時對於不適合因某一特定目的而改變的系統部分,這種模式也可以幫助它們完成重組。學習
創造模式包括:
3、行爲設計模式
行爲模式專一於改善或者簡化系統中不一樣對象之間的通訊。
行爲模式包括:
注
超類:被繼承的類通常稱爲「超類」,也有叫作父類。是繼承中很是重要的概念,它和子類一塊兒形象地描述了繼承的層次關係。超類設計的好與很差,首先看其內部重用率的高低,內部重用率高,必然外部重用率也高。
設計模式有什麼好處
既然學習設計模式,固然也會對咱們的工做,帶來不少好處,不然設計模式存在的價值也就不復存在了。設計模式不光帶給咱們的並不僅是良好的編碼規範,其中最重要的多是思想。
升值加薪
幾乎全部關於編程的工做面試和考覈中都會有關於模式的問題。瞭解這些知識可以幫助你發現更普遍的工做機會, 或者實現升職加薪的工做目標。
加強代碼質量
模式能讓你對已有的解決方案進行自定義, 而不用徹底自行開發。 代碼中的錯誤將更少, 由於你使用的是通過證實的標準解決方案, 它考慮了全部隱藏的問題。
利於團隊協做
設計模式定義了一種讓你和團隊成員可以更高效溝通的通用語言。你只需將模式的名稱告訴給程序員,而不須要長篇累牘地解釋本身那絕妙的設計思想以及其中各個類的做用。 不費吹灰之力就能搞定同事之間的溝通。你只需說「哦,這裏用單例就能夠了」,全部人都會理解這條建議背後的想法。只要知曉模式及其名稱,你就無需解釋什麼是單例。
更快的解決問題
設計模式是針對軟件設計中常見問題的工具箱,其中的工具就是各類通過實踐驗證的解決方案。 即便你從未遇到過這些問題,瞭解模式仍然很是有用,由於它能指導你如何使用面向對象的設計原則來解決各類問題。
反模式
反模式是軟件開發中被認爲是壞編程實踐的某些模式。用來解決共性問題從而帶來得不良的解決方案。與設計模式不一樣的是,設計模式是解決常見問題的經常使用方法,這些常見問題已經正式化,一般被認爲是一種良好的開發實踐,而反模式則是相反的,是不可取的。
有人認爲反模式是因爲將一般使用的設計模式用在了錯誤的地方,也有人認爲反模式只是一種壞習慣。簡單的來講,反模式是指在對常常面對的問題常用的低效,不良,或者有待優化的設計模式/方法。甚至,反模式也能夠是一種錯誤的開發思想/理念。
反模式的流行背後都存在頗有說服力的緣由,但反模式對可維護性和軟件的長期發展有着更爲嚴重的影響。 按照技術債務的說法,每次選擇捷徑都會產生隱含的代價,而這些代價在未來的某一時刻總要償還。 那些推遲的重構不只會影響下一次變動,並且會像經濟債務同樣持續地疊加利息。
總結
本文主要對設計模式作了一些簡單的認識和了解,接下來的一段時間筆者會不定時更新,上述所說的23
種設計模式。接下來的時間咱們就一塊兒學習設計模式吧。
在學習過程當中不要太糾結於代碼,學會並理解其中的思想便可,熟練掌握並能運用其種思想在實際開發的項目中,你會發現本身成長了很大一截。