1. 定義
運用共享技術有效的支援大量細粒度的物件
2. 使用場景系統中存在大量的相似物件細粒度的物件都具備較接近的外部狀態,而內部狀態與環境無關,也就是說物件沒有特定身份需要緩衝池的場景3. 優缺點優點:大幅度降低記憶體中物件的數量,提升效能減少記憶體缺點:為了使物件可以共享,需要將一些狀態外部化,使得程式邏輯複雜化,而且讀取外部狀態使得執行時間稍微變長4. Android原始碼中的使用我們平時使用的Handler中的getPostMessage所得到的message物件就是透過享元模式建立的, 可以看下如下程式碼:
可以看到Message物件並不是透過new去大量構建的,而是透過一個預設大小為50的物件池。
5. 例項演示以購買火車票為例
1. 建立一個車票介面
2. 建立一個實現類-火車票
3建立車票的工廠類,使用享元模式普通寫法每次都new會消耗資源和記憶體,甚至導致OOM
4. 使用享元建立例項,
最新評論