一共有七大設計原則,分別為:
1:開閉原則
對擴充套件開放,對修改關閉。
即:不修改原有實現類,而是寫新的實現類。
缺點:導致**臃腫。
2:依賴倒置原則
高層(呼叫層)模組不應該依賴底層模組,二者都應該依賴其抽象。抽象不應該依賴細節,細節應該依賴抽象。
即:要面向介面程式設計,先頂層再細節來設計**結構。
倒置:先框架,後細節。
3:單一職責原則
職責單一,乙個class/inte***ce/method只負責一項職責。
4:介面隔離原則
用多個專門的介面,而不使用單一的臃腫的介面,客戶端不應該依賴它不需要的介面。注意以下幾點:
乙個類對乙個類的依賴應該建立在最小的介面之上。
建立單一介面,不要建立龐大臃腫的介面。
盡量細化介面,介面中的方法盡量少(不是越少越好,一定要適度)。
介面隔離原則符合我們常說的高內聚低耦合的設計思想。
5:迪公尺特原則(又叫最少知道原則)
主要強調只和朋友交流,不和陌生人說話。
出現在成員變數、方法的輸入、輸出引數中的類都可以稱之為成員朋友類,而出現在方法體內部的類不屬於朋友類。
6:黎克特制替換原則
理解為乙個軟體實體如果適用乙個父類的話,那一定是適用於其子類,所有引用父類的地方必須能透明地使用其子類的物件,子類物件能夠替換父類物件,而程式邏輯不變。
引申含義:子類可以擴充套件父類的功能,但不能改變父類原有的功能。
子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。
子類中可以增加自己特有的方法。
當子類的方法過載父類的方法時,方法的前置條件(即方法的輸入/入參)要比父類方法的輸入引數更寬鬆。
當子類的方法實現父類的方法時(重寫/過載或實現抽象方法),方法的後置條件(即方法的輸出/返回值)要比父類更嚴格或相等。
7:合成復用原則
指盡量使用物件組合(has-a)/聚合(contanis-a),而不是繼承關係達到軟體復用的目的。
繼承我們叫做白箱復用,相當於把所有的實現細節暴露給子類。組合/聚合也稱之為黑箱復用,對類 以外的物件是無法獲取到實現細節的。
聚合、組合
體會
學習設計原則是學習設計模式的基礎。在實際開發過程中,並不是一定要求所有**都遵循設計原則,我們要考慮人力、時間、成本、質量。不要刻意追求完美,而是在適當的場景遵循設計原則,體現的是一種平衡取捨,從而幫助我們設計出更加優雅的**結構。
斷點續傳學習心得與體會
public void doclick view v case r.id stop public class downserivce extends service else if stop action.equals intent.getaction return super.onstartcom...
C語言學習心得與體會1
可能是我的自學能力不夠強,在我自學完陣列之後,發現題目還是不會刷,並未熟練掌握陣列的實際應用,但是不會像以前一樣寫資料較多的題目時會定義太多符號,現在乙個陣列就搞定,這讓我重拾信心。在通過老師的課堂詳細講解之後,我對陣列的了解更深一步了。我嘗試著刷陣列的題目,從剛開始連陣列的定義 賦值與輸出都不熟悉...
指標學習心得與理解
在c語言的學習過程中,指標是相當重要的一部分,學好指針對c的學習有很重要的意義。指標和記憶體 如果說記憶體相當於街道,那麼位址就相當於位於街道中房子的房號。乙個位元組 8bit 包含乙個位址。記憶體中每乙個位置都包含乙個獨一無二的位址標識,而每乙個位置都包含乙個值。p分別作為左值和右值時具有不同的意...