前往目錄:
擴充套件時不改變原有**。乙個抽象類被多個子類繼承並實現抽象方法,呼叫者取得抽象類物件並呼叫方法,main中對呼叫者傳入不同子物件來實現切換(拓展時加子類即可)。
能使用父類的地方一定能使用子類,正方形不是長方形。假設長方形設定寬比高小時自增,正方形繼承長方形方法後會死迴圈,因此根據此原則不能使用繼承,解決方法:將共有方法提出為乙個介面。
呼叫類不依賴被呼叫類。呼叫乙個類時,應該呼叫目標類的父抽象類/介面,而不是直接呼叫該類,是開閉原則的具體實現。
使用時直接繼承/實現介面,根據需求傳入不同實現類。
子類不應該被迫依賴不使用的方法。子類繼承父類/類實現介面,會得到父類/介面的所有方法,假如部分方法不需要使用,則導致違背此原則。改進:將父類/介面拆分為多個介面,實現類按需實現。
兩個實體類無法直接通訊時,通過第三方。即加乙個中間人,你打暑假工,不需要直接找公司,你找中介,中介為你找公司。此時你、公司均與中介有關聯,只需通過中介,就可以實現你與公司的事務。
朋友:中介類存入你物件、中介類存入公司物件
先考慮組合、聚合,後考慮繼承。場景:汽車》分型別》分顏色使用繼承,此時新增新型別,那麼需要新型別》分顏色,此時需要建立新型別加大量顏色子類。
此時將顏色類聚合到汽車中,則不需要建立大量子類,說白了就是能放在父類的屬性,就不要搞繼承。
設計模式 6大設計原則
目錄 1 單一職責原則 2 黎克特制替換原則 3 依賴倒轉原則 4 介面隔離原則 5 迪公尺特法則 6 開閉原則 7 合成 聚合復用原則 single responsibility principle 應該有且僅有乙個原因引起類的變更。乙個介面包含了兩個或多個職責,而且這兩個或多個職責的變化不相互影...
設計模式 6大設計原則
單一職責原則 srp single responsibility principle 優點 建議 介面一定要做到單一職責,類的設計盡量做到只有乙個原因引起變化。定義 所有引用基類的地方必須能透明地使用其子類物件。四層含義 建議 類中呼叫其他類時,務必使用父類或介面 否則說明違背了此原則。若子類不能完...
6大設計原則 23種設計模式
乙個類只負責一項職責,應該僅有乙個引起它變化的原因。優點 子類可以擴充套件父類的功能,但不能改變父類原有的功能。即任何基類可以出現的地方,子類一定可以出現,並且當用子類替換了基類後程式不受影響。含義 要求對抽象進行程式設計,不要對實現進行程式設計。實際程式設計中需要做到 建立單一介面,不要建立龐大臃...