本文轉載: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.抽象層儘量保持穩定
元數據控制模塊行爲
制定項目章程
封裝變化
項目的設計原則:
軟件的設計體現了哲學的思想,計算機的一些原理和架構也可以指導生活,生活中一些解決問題的方法也可以應用到計算機中
將一個大功能拆成小功能,每個功能儘可能小,一個功能一個模塊,模塊的功能儘量的單一,模塊可能有一個或多個類組成(類和類的關係有:封裝,繼承,多態)
項目中往往會存在一個管理器,相當於負責人一樣,負責將多個模塊組裝起來,調用。