1、可拓展性,容易新增新的功能。
2、靈活性,修改**時更容易新增新的功能。
3、可插入行,容易將乙個類插進去,並且同時將另乙個有同樣介面的類加進來。
高內聚低耦合
高內聚:在這個類中,自己的裡面有很強的相關性**組成,只負責一項任務,不可分割。
低耦合:在多個類之間,他們的相互聯絡能力盡量的低,比如去掉乙個類,不影響其他功能的正常執行。但是這種不是絕對的互不相干,而是盡量的低,盡量的不要有太多的干涉。
1.單一職責原則
2.開放—封閉原則
3.黎克特制替換原則
4.依賴倒置原則
5.介面隔離原則
6.迪公尺特法則定義:乙個類只負責乙個功能領域中的相應職責,或者說,就乙個類而言,應該只有乙個因其他變化的原因。
體現:高內聚
解釋:乙個類(大到模組,小到方法),承擔的職責越多,被復用性的可能就越小,職責越多的類,類和類之間就容易耦合在一起,,當乙個職責發生變化時,其他職責很可能受到影響,因此要將這些職責分離,封裝在不同的類中,即不同的變化原因封裝在不同的類中,如果多個職責同時發生改變,可以將它封裝在同乙個類中。
好處:
1.降低類的複雜度,乙個類只負責乙個職責。
2.複雜度低,可讀性自然提高。
3.可維護性高,風險低。如果介面的單一職責性好,乙個介面的修改只對應相應的實現類的影響,對其他介面無影響,對系統的擴充套件性,維護性都有幫助。
定義:對擴充套件開放,對修改封閉。
體現:高內聚(對修改封閉),低耦合(對擴充套件開放)。
解釋:軟體盡量不在修改源**的情況下進行修改。
好處:適應性、靈活性、穩定性都比較好。
當已有的軟體系統需要新增加功能的時候,在原有的**上進行附加新的模組就行,新增加的模組對原有的模組完全沒有影響或者影響很小,這樣就無需對原有的模組進行重新測試。
定義:子型別必須能夠替換他們的基型別
體現:低耦合
解釋:就是軟體使用了基類(父類),那麼把這個基類換成子類,程式不會發生任何變化
好處:可以很容易實現同一父類下子類的互換,客戶端毫無察覺。
定義:依賴於抽象,不要依賴於具體。
體現:低耦合
解釋:抽象不應當依賴於細節,細節應當依賴於抽象。要針對介面程式設計,不要針對現實程式設計。所有的介面都依賴於介面,而不是依賴於介面的實現。
好處:傳統的程式設計,策略依賴於細節,這是糟糕的,因為策略受到細節的影響,依賴倒置原則把細節和策略都依賴於抽象,抽象的穩定性決定了系統的穩定性。策略就是你要完成這個要求要寫的方法你用的思路,細節就是這個方法內部具體的實現,把他們這些不確定的因素都歸結到確定的抽象當中去,就會提高穩定性。
定義:使用多個專一功能的介面,總要比使用乙個總介面總要好。
體現:高內聚
解釋:乙個類對另乙個類的依懶性應剛建立在最小介面上,就是高內聚寫在乙個類裡面,這個類想要和別的類互動最好通過最小的藉口,避免產生堵塞或者耦合低內聚。
好處:乙個程式想要增加功能的時候,修改的壓力不會傳到別的物件那裡。
定義:最少知識原則(lkp)
體現:低耦合
解釋:物件和物件之間應該盡量使用盡可能少的方法來關聯,避免千絲萬縷的關聯。類訪問其他類的方法或者屬性應盡量少。
歸根結底面對物件設計就是要滿足客戶的要求,在增添活著刪減功能的時候修改方便,盡量不牽一髮而動全身,並且滿足這些原則整體**整潔。
總的來說就是六個字,高內聚低耦合。滿足這兩點,**在按照客戶需求修改時會很方便,靈活。
物件導向設計
物件導向設計 object oriented design,ood 方法是oo方法中乙個中間過渡環節。其主要作用是對ooa分析的結果作進一步的規範化整理,以便能夠被oop直接接受。物件導向設計 ood 是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照bjarne stroustrup的說法...
物件導向設計
1 物件導向的三要素 1.1 封裝 encapsulation a 封裝 合理的隱藏資料的隱藏 隱藏在方法背後 實現的隱藏 隱藏在介面背後 變化的隱藏 隱藏在抽象背後 b 封裝能夠提高物件的復用性 減低物件的耦合度c 良好的封裝 物件的高內聚 1.2 繼承 inheritance a 基於差異式程式...
物件導向設計
物件導向的設計把握乙個重要原則 誰擁有資料,誰就對外提供操作這些資料的方法。人在黑板上畫圓 person,blackboard,circle draw 列車司機在剎車 人關門 兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材可以做椅子。stone石頭 stoneknife石刀 stoneknife...