1. 程式人生 > >LOL in Java

LOL in Java

如同 基類 抽象工廠 是什麽 模塊 能夠 組合模式 中介 異常

有一定編碼經驗的人,不知不覺就能掌握一些常用的設計模式。

設計模式於我的感悟就是,編碼的套路,解決特定問題的最佳實踐。正如打LOL一樣,遇到不同的戰局,采取不能的策略。

新手剛了解設計模式中抽象的概念時容易一臉茫然(沒有遇到具體的應用場景確實也難以掌握),而老手往往駕輕就熟。

其實各行各業很多方面的思想是想通的,設計模式的思路不僅限於編程!我們不僅可以 Thinking in Java,也可以 LOL in Java !

【初識設計模式】模塊,將對一些常用的設計模式進行粗淺的記錄。舉例也采用LOL的思路,更容易接受這些抽象的概念。

用LOL的思路學習設計模式,so easy!

下邊是粘貼的設計模式的一些概念:

設計模式是什麽

設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。

使用設計模式是為了可重用代碼、讓代碼更容易地被他人理解、保證代碼可靠性。

毫無疑問,設計模式於己於人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。

總體來說,設計模式分為3大類總共23種:

1、創建型模式,共5種

工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式

2、結構型模式,共7種

適配器模式、裝飾器模式、外觀模式、橋接模式、組合模式、享元模式

3、行為型模式,共11種

策略模式、模板方法模式、觀察者模式、叠代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式

設計模式六大原則

1、開閉原則OCP

開閉原則說的是,對擴展開放、對修改關閉。在程序需要進行擴展的時候,不能去修改原有的代碼,這也是為了使程序的擴展性更好、易於升級和維護。

2、裏氏代換原則LSP

在軟件中將一個基類對象替換成它的子類對象,程序將不會產生任何錯誤和異常,反過來則不成立。如果一個軟件實體使用的是一個子類對象的話,那麽它一定不能夠使用基類對象。裏氏代換原則的程序表現就是:在程序中盡量使用基類類型來對對象進行定義,而在運行時再確定其子類類型,用子類對象來替換父類。

3、控制反轉原則IOC

針對接口編程,依賴於抽象而不依賴於具體

4、接口隔離原則ISP

使用多個隔離的接口,比使用單個接口要好

5、迪米特法則DP

一個實體應當盡量少地與其他實體間發生相互作用,使得系統功能模塊相對獨立

6、合成復用原則

盡量使用組合/聚合的方式,而不是使用繼承

設計中的三個關鍵字

1、抽象化

在眾多事物中提取出共同的、本質性的特征,舍棄非本質的特征,就是抽象化。抽象化的過程也是一個剪裁的過程,在抽象時,同於不同,取決於從什麽角度上來抽象。抽象的角度取決於分析問題的目的。

2、實現化

抽象類給出的具體實現,就是實現化。

一個類的實例就是這個類的實例化,一個具體子類是它的抽象超類的實例化。

3、解耦

這就比較重要了,平時我們老說好的代碼應該是"高內聚、低耦合",那麽什麽是耦合呢?

所謂耦合,就是兩個實體的行為的某種強關聯。而將它們之間的強關聯去掉,就是解耦。解耦是指將抽象化和實現化之間的耦合解開,或者說是將它們之間的強關聯改換成弱關聯。

所謂強關聯,指的是在編譯時期已經確定的,無法在運行時期動態改變的關聯;所謂弱關聯,就是可以動態地確定並且在運行時期動態改變的關聯。從這個定義看,繼承關系是強關聯,聚合關系是弱關聯。

LOL in Java