定義:乙個類只提供一種功能,不要存在多於乙個導致類變更的原因。
問題由來:類t負責兩個不同的職責:職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。
解決方案:遵循單一職責原則。分別建立兩個類t1、t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1時,不會使職責p2發生故障風險;同理,當修改t2時,也不會使職責p1發生故障風險。
class animal
}public
class client
}
修改增加魚類
class animal
public
void
breathe2(string args)
}public
class client
}
定義1:如果對每乙個型別為 t1的物件 o1,都有型別為 t2 的物件o2,使得以 t1定義的所有程式 p 在所有的物件 o1 都代換成 o2 時,程式 p 的行為沒有發生變化,那麼型別 t2 是型別 t1 的子型別。
定義2:所有引用基類的地方必須能透明地使用其子類的物件。
問題由來:有一功能p1,由類a完成。現需要將功能p1進行擴充套件,擴充套件後的功能為p,其中p由原有功能p1與新功能p2組成。新功能p由類a的子類b來完成,則子類b在完成新功能p2的同時,有可能會導致原有功能p1發生故障。
解決方案:當使用繼承時,遵循黎克特制替換原則。類b繼承類a時,除新增新的方法完成新增功能p2外,盡量不要重寫父類a的方法,也盡量不要過載父類a的方法。
設計模式 六大基本原則
軟體實體 類 模組 函式等 應該可以擴充套件 但是不可修改。俗稱 對於拓展是開放的,對於修改是關閉的 軟體開發中,前期通過需求分析 建模,巧妙利用設計模式 使系統盡可能的易維護 易拓展 健壯 當需求變化時能夠方便的對原有系統進行擴充套件 新增模組 新增方法 而不是為了滿足需求 直接在原有 上進行改動...
設計模式之六大基本原則
要開始做個人版機房了,我又重新拿起了設計模式。今天我想說說六大基本原則。包括 單一職責,開放封閉原則,依賴倒轉原則,黎克特制代換原則,迪公尺特法則,合成 聚合復用原則。單一職責 總結 就像只有畫素能夠決定相機質量一樣,音訊改變 機的品質的好壞一樣,單一職責就是只有乙個因素改變他。開發 封閉原則 軟體...
設計模式之六大基本原則
單一職責原則的本質就是要將乙個複雜的邏輯拆分成多個簡單的邏輯,以此來降低複雜度。黎克特制代換原則的核心 父親能做的孩子都能做,孩子能做的父親不能做,降低耦合度 開閉原則的核心 對修改關閉,對擴充套件開發,依次來減少耦合度。依賴倒置原則的核心 讓原來相互依賴的兩個核心模組,變為同時依賴於另乙個非核心模...