小A:“爲(wèi)什麼要使用享元模式?”
大B:“Flyweight中兩個(gè)重要概念內(nèi)部狀態(tài)intrinsic和外部狀態(tài)extrinsic之分。說(shuō)白點(diǎn),就是先捏一個(gè)的原始模型,然後隨著不同場(chǎng)合和環(huán)境,再產(chǎn)生各具特徵的具體模型,很顯然,在這裡需要產(chǎn)生不同的新對(duì)象,所以Flyweight模式中常出現(xiàn)Factory模式。Flyweight的內(nèi)部狀態(tài)是用來(lái)共享的,F(xiàn)lyweightfactory負(fù)責(zé)維護(hù)一個(gè)Flyweightpool(模式池)來(lái)存放內(nèi)部狀態(tài)的對(duì)象。”
大B:“Flyweight模式是一個(gè)提高程序效率和性能的模式,會(huì)大大加快程序的運(yùn)行速度。應(yīng)用場(chǎng)合很多:比如你要從一個(gè)數(shù)據(jù)庫(kù)中讀取一系列字符串,這些字符串中有許多是重複的,那麼我們可以將這些字符串儲(chǔ)存在Flyweight池(pool)中。”