在面向對象的軟體設計過程中,一切皆抽象成對象,在一個複雜的軟體系統中有成千上萬甚至百萬千萬級的對象,那麼這麼多對象怎麼去有效的管理?怎麼樣去重覆利用?怎麼去科學合理的組合使其能夠融為一體並且可以順利的工作,這是在面向對象設計中著重需要考慮的問題,那麼我們的前輩有沒有給我們留下來一些科學的指導原則來處 ...
在面向對象的軟體設計過程中,一切皆抽象成對象,在一個複雜的軟體系統中有成千上萬甚至百萬千萬級的對象,那麼這麼多對象怎麼去有效的管理?怎麼樣去重覆利用?怎麼去科學合理的組合使其能夠融為一體並且可以順利的工作,這是在面向對象設計中著重需要考慮的問題,那麼我們的前輩有沒有給我們留下來一些科學的指導原則來處理我們的碰到的問題呢? 答案肯定是 “有”, 那就是面向對象的設計原則,面向對象的設計原則規範了我們設計一個對象因遵守的一些約束,我們合理的運用這些原則去設計每一個對象,那麼你設計的對象才符合一個對象應該具有的樣子,那麼將這些對象按照面向對象設計的原則組裝得到的系統才能順利運行,少出Bug,易於維護,易於擴展。
面向對象有諸多的設計原則,但是通常我們提到的設計原則是其中最重要的五個設計原則,也是公認的面向對象設計的五大原則,也是通常所說的“S.O.L.I.D ”,這五個字母的縮寫代表瞭如下的五個原則,即:
設計原則名稱 |
英文描述 |
縮寫 |
定義 |
S.O.L.I.D 縮寫 |
單一職責原則 | Single Responsibility Principle | SRP | 一個類只負責一個功能領域中的相應職責 | S |
開閉原則 | Open-Closed Principle | OCP | 軟體實體應對擴展開放,而對修改關閉 | O |
里氏代換原則 | Liskov Substitution Principle | LSP | 所有引用父類對象的地方能夠使用其子類的對象 | L |
介面隔離原則 | Interface Segregation Principle | ISP | 使用多個專門的介面,而不使用單一的總介面 | I |
依賴倒轉原則 | Dependence Inversion Principle | DIP | 抽象不應該依賴於細節,細節應該依賴於抽象 | D |
接下來我們逐一詳細解析這五大原則。