您好,登錄后才能下訂單哦!
java設計模式中有哪些原則?針對這個問題,這篇文章給出了相對應的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
1)單一職責原則
降低類的復雜度,一個類只負責一項職責,提高類的可讀性,可維護性,降低類變更引起的風險,通常情況下,我們應當遵守單一職責原則,只有類邏輯足夠簡單,可以違反單一職責原則,若類的方法數量比較少,可以在方法級別保持單一原則。
2)接口隔離原則
客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。
3)依賴倒轉原則(Dependence Inversion Principle, DIP)
1、高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象
2、抽象不應該依賴細節
3、細節應該依賴抽象
4、每一個邏輯的實現都是由原子邏輯組成的,不可分割的原子邏輯就是低層模塊(一般是接口,抽象類),原子邏輯的組裝就是高層模塊。在Java語言中,抽象就是指接口和或抽象類,兩者都不能被直接實例化。細節就是實現類,實現接口或繼承抽象類而產生的類就是細節,可以被直接實例化。
4)里氏替換原則
如果對每一個類型為S的對象o1,都有類型為T的對象o2,使得以T定義的所有程序P在所有的對象o1都代換成o2 時,程序P的行為沒有發生變化,那么類型 S 是類型 T 的子類型。
所有引用基類的地方必須能透明地使用其子類的對象。
第二個定義是最清晰明確的,通俗點講,只要父類能出現的地方子類就可以出現,而且替換為子類也不會 產生任何錯誤或異常,使用者可能根本就不需要知道是父類還是子類。但是,反過來就不行了,有子類出現的地方,父類未必就能適應。
在使用繼承時,盡量不要重寫父類方法。
5)開閉原則(ocp)
一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉。
軟件實現應該對擴展開放,對修改關閉,其含義是說一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化的。
6)迪米特法則
也被稱為最少知識原則(Least knowledge Principle,LKP) 也可以表述為 一個對象應該對其他對象有最少的了解,即一個類應該對自己需要耦合或調用的類知道的最少。
1、只和朋友交流(Only talk to your immediate friends) 在類之間,什么樣的類算作朋友呢? 出現在成員變量、方法的輸入輸出參數中的類稱為成員朋友類。而出現在方法體內部的類不屬于朋友類。
2、朋友之間也是有距離的 不能暴露太多,否則二次修改的時候,會讓影響的范圍增大。 這也要求類間public方法不能肆無忌憚的暴露
3、是自己的就是自己的 如果一個方法在類間關系中,放在自身類中既不增加類間關系,也對本類不產生負面影響就放置在自身類中。
4、謹慎進行序列化操作,針對RMI(Remote Method Invocation)
最佳實踐: 迪米特法則的核心在于類間的解耦,只有弱耦合之后類的復用率才會提高。其要求的結果就是產生大量的中轉或跳轉類。
7)合成復用原則
合成/聚合復用原則是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。
簡述為:要盡量使用合成/聚合,盡量不要使用繼承。
關于java設計模式中的原則就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。