這裡說的設計模式是軟體設計裡的模式,主要是指物件導向的軟體設計。遵照設計模式,可以有效提高軟體的可維護性和可複用性,提高開發軟體的效率,避免過多的出現再造輪子的現象。
模式是一種對現實世界的概念抽象,建築模式,設計模式,營銷模式,商業運作模式各行各業都有自己的模式。
這裡說的設計模式是軟體設計裡的模式,主要是指物件導向的軟體設計。遵照設計模式,可以有效提高軟體的可維護性和可複用性,提高開發軟體的效率,避免過多的出現再造輪子的現象。
我學習模式是從知道大名頂頂的四人幫的力作《設計模式》,真正感覺到了設計模式給軟體設計所帶來的諸多好處。《設計模式》內容精練,執行個體較少,我的理解力太差,實際學習中,我是結合jeffyyan的java於模式學的。
設計軟體的幾個原則,這個也是設計模式的精髓所在:
1.開-閉原則
1).客戶的需求是不穩定的,通過擴充已有的軟體系統而不是通過修改軟體系統來滿足客戶的需求,這樣的軟體系統就滿足開-閉原則,即軟體系統要有一定的靈活性和適應性。
2) . 已有的模組,特別是抽象層的模組不能修改,保證軟體系統的穩定性和延續性。
解決問題的關鍵是抽象化,把它與具體實現分離開來。介面(interface),抽象類別的應用
對可變性封裝:將可變性封裝到一個對象裡。
2.抽象類別
抽象類別不會有執行個體,一般作為父類為子類繼承,一般包含這個系的共同屬性和方法。
注意:好的繼承關係中,只有分葉節點是具體類,其他節點應該都是抽象類別,也就是說具體類
是不被繼承的。將儘可能多的共同代碼放到抽象類別中。
3.裡氏代換原則
在有基類出現的地方,子類均可以替代。
當兩個具體類別關係違反裡氏代換原則時,一種辦法是抽象出一個基類,作為這兩個類的父類,
一種是應用組合彙總關係建立關係。
不要為了使用某些類的方法(功能)而濫用繼承。
4 依賴倒轉原則
抽象不應該依賴與細節,細節應當依賴與抽象。
要針對介面編程,而不是針對實現編程。
傳遞參數,或者在組合彙總關係中,盡量引用層次高的類。
主要是在構造對象時可以動態建立各種具體對象,當然如果一些具體類比較穩定,就不必在弄一個抽象類別做它的父類,這樣有畫舌添足的感覺
5 介面隔離原則
定製服務的例子,每一個介面應該是一種角色,不多不少,不幹不該乾的事,該乾的事都要幹
6 合成/彙總原則
盡量使用合成彙總原則,少用慎用繼承。
合成:一榮俱榮,一損俱損,整體和部分的生命週期是一樣的
彙總:部分可以是整體的一部分,也可以脫離整體而存在。
區分Has a和Is a的問題
7 迪米特法則
最少知識原則。不要和陌生人說話。