在物件導向設計中,可維護性的復用是以設計原則為基礎的,每乙個原則都蘊含一些物件導向設計的思想,蘊含在很多設計模式中,可以從不同的角度提公升乙個軟體結構的設計水平
最簡單的物件導向設計原則,用於控制類的粒度大小
乙個類(大到模組,小到方法)承擔的職責越多,它被復用的可能性就越小,而且乙個類承擔的職責過當,就相當於將這些職責耦合在一起,當其中乙個職責變化時,可能會影響其他職責的運作。因此,要將這些職責進行分離,將不同的職責封裝在不同的類中,即將不同的變化封裝在不同的類中,如果多個職責總是同時發生改變則可以將它們封裝在同乙個類中。即我們常說的:高內聚低耦合
最重要的物件導向設計原則,是物件導向設計的核心所在
開放封閉原則,對於擴充套件是開放的,對於修改是封閉的。
如果乙個軟體符合開閉原則,那麼可以非常方便地對系統進行擴充套件,而且在擴充套件時無須修改現有**,使得軟體系統在擁有適應性和靈活性的同時具備較好的穩定性和延續性。即:我們常說的:可維護、可擴充套件、可復用、靈活性好。
乙個軟體實體如果使用的是乙個父類的話,那麼一定適用其子類,而且它察覺不出父類物件和子類物件的區別,即:在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。
如果說開閉原則是物件導向設計的目標,那麼依賴倒轉原則就是物件導向設計的主要實現機制之一。
a、高層模組不應該依賴低層模組。兩個都應該依賴抽象
b、抽象不應該依賴細節,細節應該依賴抽象。簡單地要求:針對介面程式設計,不要針對實現程式設計
又稱為「最少知識原則」
如果兩個類不必彼此直接通訊那麼這兩個類就不應當直接發生直接的相互作用。若其中乙個類需要呼叫另乙個類的某個方法的話,可以通過第三者**這個呼叫
其根本思想,是強調了類之間的松耦合。
即:不要和陌生人說話,只和你的直接朋友聯絡
開閉原則、黎克特制轉換、依賴倒轉原則一般會同時出現:開閉是目標,黎克特制是基礎,依賴是手段,它們相輔相成,相互補充,目標一致,只是分析問題時所站角度不同。
單一職責告訴我們實現類要職責單一;黎克特制轉換告訴我們不要破壞繼承體系;依賴倒置告訴我們要面向介面程式設計;迪公尺特法則告訴我們要降低耦合,開閉是總綱,告訴我們對擴充套件開放,對修改關閉。
設計模式五 原型模式
建立型模式最後一種 原型模式 一般用於框架 或者稱為轉殖模式 使用場景 當物件建立比較繁瑣 耗時 或者有訪問許可權的時候 可以使用原型模式 以某個物件為原型 複製出新的物件 不同於new 實現 實現cloneable 介面和重寫clone方法 記憶體賦值 public class sheep imp...
設計模式(五) 原型模式
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。通俗來說,原型模式就是從乙個物件,通過複製的手段去建立另外乙個物件,而且不需要知道任何建立的細節。思考 這麼做有什麼好處?角色說明 抽象原型類。宣告乙個轉殖自身的介面 抽象方法 具體原型類。實現乙個轉殖自身的方法 讓乙個原型轉殖自身從而...
設計模式學習 五 原型模式
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是 通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷...