動態的為物件增加乙個新的功能
優點:使用物件的關聯關係取代繼承關係,降低系統的耦合度,避免型別體系的快速膨脹
缺點:會產生很多小物件,大量小物件占用記憶體,在一定程度上影響效能
迪公尺特法則(最少知識原則):乙個軟體實體應當盡可能少的與其他實體發生相互作用
將現有介面功能進行組合封裝,對外界提供最少的介面
特點:記憶體屬於稀缺資源,多個完全相同或相似的物件,共同占用記憶體
以共享的方式高效的支援大量細粒度物件的重用
極大的減少了記憶體中物件的數量,執行時間變長,以時間換取空間
核心關鍵 :內部狀態:可以共享,不會隨環境變化而改變
外部狀態:不可共享,會隨環境變化而隨之改變
元件:flyweightfactory:享元工廠類,建立並管理享元物件,一般設計為鍵值對
flyweight:抽象享元類,申明公共方法,可提供內部狀態,設定外部狀態
concreteflyweight:具體享元類,
unsharedconcreteflyweight:非共享享元類
example:執行緒池,資料庫連線池,string類的設計
uml:
GoF結構型模式 組合模式
常常有一些元件在內部具有特定的資料結構,如果讓客戶依賴這些特定的資料結構,將極大地破壞元件的復用。這時候,將這些特定的資料結構封裝在內部,在外部提供同一的介面,來實現與特定資料結構無關的訪問,是一 種行之有效的解決方案。將物件組合成樹形結構以表示 部分 整體 的層次結構。composite使得使用者...
GOF結構型模式 裝飾模式
小豬逃命 遊戲 乙隻小豬和乙隻灰狼,小豬最多5條命,灰狼每咬到小豬一次,小豬就要少一條命,小豬的任務是要逃過灰狼的追咬到豬欄。在逃的過程中小豬可以吃到三種蘋果,吃 紅蘋果 可以給小豬加上保護罩,吃 綠蘋果 可以加快小豬奔跑速度,吃 黃蘋果 可以使豬趟著水跑。小豬如果吃多種蘋果的話,小豬可以擁有多種蘋...
建立型模式,結構型模式,結構型模式
為了閱讀方便,本文使用 全文手工轉換 轉換內容 本文採用電腦和資訊科技 顯示 關閉 字詞轉換 說明 字詞轉換是中文維基的一項自動轉換,目的是通過電腦程式自動消除繁簡 地區詞等不同用字模式的差異,以達到閱讀方便。字詞轉換包括全域性轉換和手動轉換,本說明所使用的標題轉換和全文轉換技術,都屬於手動轉換。如...