1.享元模式(flyweight),運用共享技術有效地支援大量細粒度的物件。
2.享元模式(flyweight)結構圖
3.內部狀態與外部狀態:在享元物件內部並且不會隨環境改變而改變的共享部分,可以稱為是享元物件的內部狀態,而隨環境改變而改變的、不可以共享的狀態就是外部狀態了。
4.事實上,享元模式可以避免大量非常相似類的開銷。在程式設計中,有時需要生成大量細粒度的類例項來表示資料。如果能發現這些例項除了幾個引數外基本上都是相同的,有時就能夠受大幅度地減少需要例項化的類的數量。如果能把那些引數移到類例項的外面,在方法呼叫時將它們傳遞進來,就可以通過共享大幅度地減少單個例項的數目。也就是說,享元模式flyweight執行時所需的狀態是有內部的也可能有外部的,內部狀態儲存於concreteflyweight物件之中,而外部物件則應該考慮由客戶端物件儲存或計算,當呼叫flyweight物件的操作時,將該狀態傳遞給它。
5.如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時就應該考慮使用;還有就是物件的大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時可以考慮使用享元模式。
大話設計模式讀書筆記 21 享元模式
享元模式定義 運用共享的技術有效地支援大量細粒度的物件。內部狀態和外部狀態 在享元物件內部,不會隨環境改變而改變的狀態稱為內部狀態,否則是外部狀態,在呼叫享元物件時,把外部狀態傳給它比如 在開發棋類遊戲時,如果每乙個棋子都代表乙個物件,那例項數會很多,仔細分析會發現,圍棋和五子棋只有黑白兩色,各個棋...
《大話設計模式》 第26個 享元模式
享元模式目的是為了減少物件例項化的個數,已達到減少物件占用記憶體的目的。他建立物件是通過工廠建立的,在工廠類中建立物件時,會先判斷此物件是否已經存在,如果不存在則建立物件,如果存在則返回已經存在的物件,這是享元模式的核心部分。對於物件間的不同部分,則採用引數傳遞的方式將不同部分傳進類的處理函式。如下...
《大話設計模式》讀書筆記 第24章 職責鏈模式
1 職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。2 職責鏈模式 chain of responsibility 結構圖 3 當客戶提交乙個請...