小A:“為什麼要使用享元模式?”
大B:“Flyweight中兩個重要概念內部狀態intrinsic和外部狀態extrinsic之分。說白點,就是先捏一個的原始模型,然後隨著不同場合和環境,再產生各具特徵的具體模型,很顯然,在這裡需要產生不同的新物件,所以Flyweight模式中常出現Factory模式。Flyweight的內部狀態是用來共享的,Flyweightfactory負責維護一個Flyweightpool(模式池)來存放內部狀態的物件。”
大B:“Flyweight模式是一個提高程式效率和效能的模式,會大大加快程式的執行速度。應用場合很多:比如你要從一個數據庫中讀取一系列字串,這些字串中有許多是重複的,那麼我們可以將這些字串儲存在Flyweight池(pool)中。”