Java設計模式——六大設計原則

本文轉載:http://blog.csdn.net/u013736932/article/details/53451615



請支持原創,訪問原創鏈接查看,謝謝。本博客只起一個記錄的作用。



1.單一職責原則


單一職責原則的定義是類的變更的原因應該只有一個,它提出用“職責”和“變化原因”來衡量接口或類設計得是否優良,但是這兩個因素都是因項目而異因環境而異的,並沒有一個量化的標準 

單一職責原則使類的複雜性降低,實現什麼職責都有清晰的定義,複雜性降低後可讀性也就提高了,可讀性提高也就更容易進行維護了。如果接口的單一職責做的好,一個接口修改只對相應的實現類有影響,對系統的擴展性和可維護性也有很大提高 

除了類與接口之外,方法也同樣需要使用單一職責原則,避免方法顆粒度太粗 

類儘量做到單一原則,接口一定要做到單一原則


2.里氏替換原則


里氏替換原則定義:只要父類能出現的地方子類就可以出現,替換爲子類也不會產生任何錯誤和異常,但是反過來卻不行,有子類的地方父類未必能適應 

里氏替換原則爲良好的繼承定義了規範 

1.子類必須完全實現父類的方法,如果子類不能完整的實現父類的方法,建議斷開繼承,採用依賴,聚集,組合等關係代替繼承 

2.子類可以有自己的個性 

3.覆蓋或實現父類方法時參數可以被放大 

4.覆寫或實現父類方法時輸出結果可以被縮小


3.依賴倒置原則


在Java中的表現是: 

1.模塊間的依賴通過抽象發生,實現類之間不存在直接的依賴關係,其依賴關係是通過接口或抽象類產生的。 

2.接口或抽象類不依賴實現類 

3.實現類依賴接口或抽象類 

依賴的三種寫法: 

1.構造函數傳遞依賴對象 

2.Setter方法傳遞依賴對象 

3.接口聲明傳遞依賴對象 

依賴倒置需遵循規則: 

1.每個類儘量都有接口或抽象類 

2.變量的表面類型儘量是接口或抽像類 

3.任何類都不應該從具體類派生 

4.儘量不要覆寫基類的方法 

5.結合里氏替換原則使用


4.接口隔離原則


兩種接口: 

1.實例接口,例如:Person lisi = new Person()產生一個實例,這個實例要遵從的就是Person這個類,Person就是lisi的接口。 

2.類接口,interface關鍵字定義的接口 

接口隔離原則定義:建立單一接口,不要建立臃腫的接口 

通過分散定義接口可以預防未來變更的擴散,提高系統靈活性和可維護性 

接口隔離原則含義: 

1.接口要儘量小,但不能違反單一職責原則 

2.接口要高內聚,即減少對外交互,提高接口,類,模塊處理能力 

3.定製服務 

4.接口設計是有限度的


5.迪米特法則


定義:一個對象應該對其他對象有最少的瞭解 

含義: 

1.一個方法儘量不引入一個類中不存在的對象JAVAAPI除外 

2.儘量不要公佈太多的public方法和非靜態的public變量 

3.如果一個方法放在本類中,既不增加類間的關係,也對本類不產生負面影響,那就放置在本類中


6.開閉原則


定義:軟件實體應該對擴展開發,對修改關閉 

開閉原則可以提高代碼複用性,可維護性,並且符合面向對象開發的要求 

如何使用開閉原則:


抽象約束: 

1.通過接口或抽象類約束擴展,對擴展進行邊界限定,不允許出現在接口或抽象類中沒有的public方法 

2.參數類型,引用對象儘量使用接口或抽象類,而非實現類 

3.抽象層儘量保持穩定

元數據控制模塊行爲

制定項目章程

封裝變化


項目的設計原則:

軟件的設計體現了哲學的思想,計算機的一些原理和架構也可以指導生活,生活中一些解決問題的方法也可以應用到計算機中

將一個大功能拆成小功能,每個功能儘可能小,一個功能一個模塊,模塊的功能儘量的單一,模塊可能有一個或多個類組成(類和類的關係有:封裝,繼承,多態)

項目中往往會存在一個管理器,相當於負責人一樣,負責將多個模塊組裝起來,調用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章