s single responsibility principle 單一職責原則
o open close principle 開閉原則
l liskov substitution principle 黎克特制替換原則
i inte***ce segregation principle 介面隔離原則
d dependence inversion principle 依賴倒置原則
l law of demeter 迪公尺特法則
c composite/aggregate reuse principle carp 合成復用原則
前面五種被稱為物件導向設計中常用的solid原則。
理解:不同的類具備不同的職責,各司其職。做系統設計是,如果發現有乙個類擁有了兩種職責,那麼就要問乙個問題:可以將這個類分成兩個類嗎?如果真的有必要,那就分開,千萬不要讓乙個類幹的事情太多。
總結:乙個類只承擔乙個職責
理解:類、模組、函式,可以去擴充套件,但不要去修改。如果要修改**,盡量用繼承或組合的方式來擴充套件類的功能,而不是直接修改類的**。當然,如果能保證對整個架構不會產生任何影響,那就沒必要搞的那麼複雜,直接改這個類吧。
總結:對軟體實體的改動,最好用擴充套件而非修改的方式。
理解:乙個物件在其出現的任何地方,都可以用子類例項做替換,並且不會導致程式的錯誤。換句話說,當子類可以在任意地方替換基類且軟體功能不受影響時,這種繼承關係的建模才是合理的。
總結:子類可以擴充套件父類的方法,但不應該複寫父類的方法。
理解:乙個類實現的介面中,包含了它不需要的方法。將介面拆分成更小和更具體的介面,有助於解耦,從而更容易重構、更改。
總結:物件不應被強迫依賴它不使用的方法。
理解:高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
總結:面向介面程式設計,提取出事務的本質和共性。
理解:乙個物件對另乙個物件了解得越多,那麼,它們之間的耦合性也就越強,當修改其中乙個物件時,對另乙個物件造成的影響也就越大。
總結:乙個物件應該對其他物件保持最少的了解,實現低耦合、高內聚。
理解:合成/聚合復用原則就是在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過向這些物件的委派達到復用已有功能的目的。它的設計原則是:要盡量使用合成/聚合,盡量不要使用繼承。
總結:就是說要少用繼承,多用合成關係來實現。
重學設計模式 Adapter模式
adapter就是乙個目標不能直接拿來使用,需要轉換。如電源介面卡 設計模式 一書中對adapter模式的意圖是這樣敘述的 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使原本由於介面不相容而不能一起工作的類可以一起工作。使控制範圍之外的乙個原有物件與某個介面匹配 問題 系統的資料和...
重學設計模式 Factory Method模式
1 意圖 定義乙個建立物件的介面,讓子類決定例項化哪乙個類。factory method模式使乙個類的例項化延遲到子類。2 問題 乙個類需要例項化另乙個類的派生類。但不知道是哪乙個。factory method允許派生類進行決策。3 解決方案 派生類對例項化哪個類和如何例項化做出決策。4 通用結構 ...
重學設計模式 Prototype模式
1 意圖 2 問題 3 解決方案 4 通用結構 5 參與者 6 協作 7 效果 8 實現 1 使用乙個原型管理器 當乙個系統中原型數目不固定時 以動態建立和銷毀 要保持乙個可用原型的登錄檔。客戶不會自己來管理原型,但會在登錄檔中儲存和檢索原型。客戶在轉殖乙個原型前會向登錄檔請求該原型,這個登錄檔為原...