1. 程式人生 > >設計模式 之 享元模式

設計模式 之 享元模式

info 如果能 實例化 應用 技術 一個 對象存儲 數量 col

(一) 享元模式

  享元模式 : 運用共享技術有效地支持大量細粒度的對象

  技術分享圖片

(二)內部狀態和外部狀態

  在享元對象內部並且不會隨環境改變而改變的共享部分,可以稱為是享元對象的內部狀態,而隨環境改變而改變的,不可以共享的狀態就是外部狀態了.事實上,享元模式可以避免大量非常相似的開銷.在程序設計中,有時需要生成大量細粒度的類實例來表示數據.如果能發現這些實例除了幾個參數外基本上都是相同的,有時就能夠受大幅度地減少需要實例化的類的數量.如果能發現這些實例除了幾個參數外基本上都是相同的,有時就能夠受大幅度地減少需要實例化的類的數量.如果能把那些參數移到類實例的外面,在方法調用時將它們傳遞進來,就可以通過共享大幅度地減少單個實例的數目.

也就是說,享元模式Flyweight執行時所需的狀態是有內部的也可能有外部的,內部狀態存儲於ConcreteFlyweight對象之中,而外部對象則應該考慮由客戶端對象存儲或計算,當調用Flyweight對象的操作時,將該狀態傳遞給它.

(三)享元模式的應用

  如果一個應用程序使用了大量的對象,而大量的這些對象造成了很大的存儲開銷時就應該考慮使用:還有就是對象的大多數狀態可以是外部狀態,如果刪除對象的外部狀態,如果刪除對象的外部狀態,那麽可以用相對較少的共享對象取代很多組對象,此時可以考慮使用享元模式.


    

        乘風破浪會有時,  

              直掛雲帆濟滄海

設計模式 之 享元模式