圖解Java設計模式,輕松易懂
?


【設計模式簡介】
設計模式(Design pattern)代表了最佳的實踐,通常被有經(jīng)驗的面向?qū)ο蟮能浖_發(fā)人員所采用。設計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經(jīng)過相當長的一段時間的試驗和錯誤總結出來的。
設計模式提供了一個標準的術語系統(tǒng),且具體到特定的情景。例如,單例設計模式意味著使用單個對象,這樣所有熟悉單例設計模式的開發(fā)人員都能使用單個對象,并且可以通過這種方式告訴對方,程序使用的是單例模式。
設計模式已經(jīng)經(jīng)歷了很長一段時間的發(fā)展,它們提供了軟件開發(fā)過程中面臨的一般問題的最佳解決方案。學習這些模式有助于經(jīng)驗不足的開發(fā)人員通過一種簡單快捷的方式來學習軟件設計。
?
【設計模式七大原則】
設計模式原則,其實就是程序員在編程時,應當遵守的原則,也是各種設計模式的基礎(即:設計模式為什么這樣設計的依據(jù))
設計模式常用的七大原則有:
1.????? 單一職責原則
單一職責的定義:應該有且只有一個原因引起類的變更。換句話說就是一個接口只做一件事,即一個職責一個接口。
但是困難的是劃分職責時并沒有一個標準,最終都是需要從實際的項目去考慮。我們在設計的時候,盡量單一,然后對于其實現(xiàn)類就要多方面的考慮。不能死套單一職責原則,否則會增加很多類,給維護帶來不便。
2.????? 接口隔離原則
這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發(fā),為了升級和維護方便。在開發(fā)過程當中回盡量地去降低依賴,降低耦合。
?
3.????? 依賴倒轉(zhuǎn)(倒置)原則
這個是開閉原則的基礎,具體內(nèi)容:真對接口編程,依賴于抽象而不依賴于具體。
java中抽象指接口或抽象類,兩者都不能直接被實例化的;細節(jié)就是實現(xiàn)類,實現(xiàn)接口或者集成抽象類而產(chǎn)生的也就細節(jié),也就是可以可以加上yige 關鍵字new產(chǎn)生的對象。高層模塊就是調(diào)用端,低層模塊就是具體實現(xiàn)類。
依賴倒置原則在java中表現(xiàn)就是,模塊間依賴通過抽象發(fā)生,實現(xiàn)類之間不發(fā)生直接依賴關系,其依賴關系是通過接口或者抽象類產(chǎn)生的。如果類與類直接依賴細節(jié),那么就會直接耦合。如此一來當修改時,就會同時修改依賴者代碼,這樣限制了可拓展性。
4.????? 里氏替換原則
里氏代換原則(Liskov Substitution Principle LSP)面向?qū)ο笤O計的基本原則之一。 里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。
LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。
里氏代換原則是對“開-閉”原則的補充。實現(xiàn)“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關系就是抽象化的具體實現(xiàn),所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范。
?
5.????? 開閉原則
開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現(xiàn)一個熱插拔的效果。簡單來說:就是為了使程序的擴展性好,易于維護和升級。
?
6.????? 迪米特法則
一個實體應當盡量少的與其他實體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對獨立。
?
7.????? 合成復用原則
盡量使用依賴、聚合、組合的方式,而不是使用繼承
?
【系統(tǒng)學習并掌握Java設計模式】
尚硅谷圖解Java設計模式教程
https://www.bilibili.com/video/BV1G4411c7N4
課程詳情:
設計模式包含了大量的編程思想,講授和真正掌握并不容易,網(wǎng)上的設計模式課程不少,大多講解的比較晦澀,沒有真實的應用場景和框架源碼支撐,學習后,只知其形,不知其神。知道各種設計模式,但是不知道怎么使用到真實項目。
本課程針對上述問題:
(1) 授課方式采用 圖解+框架源碼分析的方式,讓課程生動有趣好理解;
(2) 系統(tǒng)全面的講解了設計模式,包括 設計模式七大原則、UML類圖-類的六大關系、23種設計模式及其分類,比如 單例模式的8種實現(xiàn)方式、工廠模式的3種實現(xiàn)方式、代理模式的3種方式、深拷貝等。
