設計模式很重要,重要性我就不再覆述了。最主要的是,通常我們在寫一定量代碼後,常用的方法什麼的都熟悉後,想再提高代碼能力,我找到的最好的方法還是去學習,理解設計模式。不理解設計模式,看一些開源框架和java源碼會很難懂。 剛學java時就從各種文章,也聽很多人說面向對象編程很重要。但是在編程時雖然會建 ...
設計模式很重要,重要性我就不再覆述了。最主要的是,通常我們在寫一定量代碼後,常用的方法什麼的都熟悉後,想再提高代碼能力,我找到的最好的方法還是去學習,理解設計模式。不理解設計模式,看一些開源框架和java源碼會很難懂。
剛學java時就從各種文章,也聽很多人說面向對象編程很重要。但是在編程時雖然會建立類什麼的,看起來是面向對象編程。面向對象中的概念也背了一大堆,然而感覺沒有真正的理解面向對象編程。因為實際上在開發業務過程中,尤其是簡單一些簡單的業務,介面,抽象類什麼的都用不上。直到開始學習設計模式後,才覺得漸漸理解面向對象編程。這兩個是相關的,或者說就是差不多的。。。我也沒想到合適形容詞,合適的話來表達這兩者的關係(手動允悲)。設計模式一開始看的時候,肯定會很枯燥,看了也會很容易忘記。這時一定要結合面向對象的特性和概念去理解,去看那些代碼。比如,類,對象,實例化,繼承,重寫等概念,你熟悉的話,肯定更容易理解設計模式。還有一開始如果不怎麼理解,千萬不要放棄,都是需要一個過程的。
現在在網上關於設計模式的文章已經很多了,設計模式的系列文章也很多。我還是打算寫一下設計模式,一是對自己的理解和學習作一個記錄,自己寫下來,更能記住和理解。二是,如果其他有人看到,希望能起到一定幫助。雖然我寫得不好,可能幫助很小。。。或者我有錯誤的地方,歡迎大家指出來,噴也不用客氣(手動笑哭)。好了,暫時就先這樣吧,希望能堅持下來,並保持每周兩篇以上的更新。
本系列用到的代碼都放在GitHub上面:https://github.com/ShaneJim/BasicJava
一、設計模式的六大設計原則:
1.單一職責原則:一個類一個職責。但“職責”容易劃分不清
2.里氏替換原則:使用父類的地方,替換成子類也可以實現
3.依賴倒置原則:高層模塊不應該依賴底層模塊,應該在兩層中間加一層抽象,兩者都依賴這個抽象
4.介面隔離原則:一個介面只對一個子模塊或業務邏輯進行服務,使用多個專門的介面比使用單一的總介面要好
5.迪米特法則:一個對象應該對其他對象有最少的瞭解,即一個類應該對自己需要耦合或者調用的類知道得最少
6.開閉原則:一個軟體實體,如類、模塊和函數應該對外擴展開放,對修改關閉
二、設計模式分為三大類:創建型,結構性,行為型。
(在寫每一篇時,發佈後,會加在這裡加上超鏈接)
創建型模式是用來創建對象的模式,抽象了實例化的過程。創建對象的同時隱藏創建邏輯,不是使用 new運算符直接實例化對象。這使得程式在判斷針對某個給定實例需要創建哪些對象時更加靈活。
1.單例模式
2.工廠方法模式
3.抽象工廠模式
4.建造者模式
5.原型模式
結構型模式討論的是類和對象的結構,它採用繼承機制來組合介面或實現,或者通過組合一些對象實現新的功能。這些結構型模式在某些方面具有很大的相似性,但側重點卻各不相同。
1.代理模式
2.裝飾模式
3.適配器模式
4.組合模式
5.橋梁模式
6.外觀模式
7.享元模式
行為型模式關註的是對象的行為,用來解決對象之間的聯繫問題。
1.模版方法模式
2.命令模式
3.責任鏈模式
4.策略模式
5.迭代器模式
6.中介者模式
7.觀察者模式
8.備忘錄模式
9.訪問者模式
10.狀態模式
11.解釋器模式