結構型強調的是1+1〉2,即充分利用現有的類或者物件,通過合理的組裝,達到意想不到(其實是迫切想達到)的效果。
1.adapter.這個基本上現有的系統中都或多或少的會用到。因為,一部分的結構是根據自己的系統制定的,另一方面利用平台提供的類庫,mfc .***等等。想把這兩個結合起來使用,必然要使用介面卡模式拉。這裡面主要是區分類適配和物件適配。即繼承還是組合拉,都差不多。好比現有乙個類可以計算兩個數值的加減。那麼有乙個計算方差的類就可以利用這個類進行方差計算拉。
2。bridge模式。這個模式業界最大的用處是利用它進行平台無關化設計。我們一般在講設計的時候,一定會有抽象和實現的概念出來。抽象就是為了不同的實現,靈活性就是這個拉。但是每個實現都離不開平台特性的。最明顯的就是畫圖或者網路同性。絕對無法通用的。這樣一來,bridge模式,進行了二次抽象,假設上層介面不變,實現的方式或者說介面抽象出來一層,利用這層抽象去實現上層介面,這樣一來不管哪個平台,只要實現了,則上層介面是不在乎的。其實,這裡面蘊含的是oo設計中非常著名的「介面倒置」原則。以往討論問題,會發現都是上層依賴下層,這個其實是很危險的,如果乙個上層利用四個下層實現,那麼這個上層受到四個地方修改而引修改的危險。不穩定性很高。
3。組合模式。強調的是動態管理容器。新增或者刪除容器內的元素,而這些元素都具有相似的職責,否則不適用該模式。避免使用者每次都要關心每個細小的元素,尤其是可以體現父子關係的時候,這個模式其實是做了一層封裝。
4。裝飾模式。這個模式很重要,充分體現了模式的動態性和靈活性。其實,對於乙個既有系統而言,可以動態的新增新的職責是乙個多麼令人欣慰的事情。好比乙個做計算的類已經處理完了,我現在需要乙個類可以把這個結果和過程記錄下來。那麼,我就需要繼承這個類,然後利用現有的方法處理計算,在新增乙個職責,把過程和結果寫入某檔案。
5.共享元模式。模式用過了或者設計過渡都會造成乙個問題,叫作子類**或者物件**。雖然現在及其的效能空前提高,但是盲目使用尤其是大專案的時候,合理利用利用資源不說是必要的,起碼也是自身水平的體現。我理解的flyweight的使用的地方主要是有大量的 類生成的物件,實用這些物件的時候沒有什麼內部狀態可言。通常乙個類會生成隨意多個物件,這些物件的不同點就是擁有不同的內部狀態,每個狀態都是每個類的瞬間快照,每個物件會根據當前狀態而往下選擇不同的行為走。而如果這個類生成的物件沒有狀這個說法,那麼哪怕是外部某物件先用物件a的某個方法執行,再把物件b拿來執行剩下的方法,都是可以的。在這個前提下,flyweight才可以用。反正無論多少個都一樣,那還不如就生成乙個,這就是為什麼說他可以節省空間了。通常我們把這些物件先生成好,隨要隨取,在每個呼叫他的物件內部只記錄他的站位符號,而不是他的副本(用副本我們還討論什麼,原型模式不是有拉)
建立型模式,結構型模式,結構型模式
為了閱讀方便,本文使用 全文手工轉換 轉換內容 本文採用電腦和資訊科技 顯示 關閉 字詞轉換 說明 字詞轉換是中文維基的一項自動轉換,目的是通過電腦程式自動消除繁簡 地區詞等不同用字模式的差異,以達到閱讀方便。字詞轉換包括全域性轉換和手動轉換,本說明所使用的標題轉換和全文轉換技術,都屬於手動轉換。如...
結構型模式
結構型模式可以分為類結構型模式和物件結構型模式 類結構型模式關心類的組合,由多個類可以組合成乙個更大的系統,在類結構型模式中一般只存在繼承關係和實現關係。物件結構型模式關心類與物件的組合,通過關聯關係使得在乙個類中定義另乙個類的例項物件,然後通過該物件呼叫其方法。根據 合成復用原則 在系統中盡量使用...
結構型模式
接著上次建立型模式,還是以手機為例來描述設計模式中的結構性模式。充電寶有華為的,有小公尺的,也有魅族的,可是不管我們手中的手機是什麼牌子的,只要有那根線,就可以用各種的充電寶。那根線就像介面卡。似乎並不太合理 我們的手機,好多人都會選擇買個手機殼,還有鋼化膜,以此來保護手機,也可能是為了美觀。所以手...