1. 定義
運用共享技術有效的支持大量細粒度的對象
2. 使用場景
系統(tǒng)中存在大量的相似對象
細粒度的對象都具備較接近的外部狀態(tài),而內部狀態(tài)與環(huán)境無關,也就是說對象沒有特定身份
需要緩沖池的場景
3. 優(yōu)缺點
優(yōu)點:
大幅度降低內存中對象的數(shù)量,提升性能減少內存
缺點:
為了使對象可以共享,需要將一些狀態(tài)外部化,使得程序邏輯復雜化,而且讀取外部狀態(tài)使得運行時間稍微變長
4. Android源碼中的使用
我們平時使用的Handler中的getPostMessage所得到的message對象就是通過享元模式創(chuàng)建的, 可以看下如下代碼:
可以看到Message對象并不是通過new去大量構建的,而是通過一個默認大小為50的對象池。
5. 實例演示
以購買火車票為例
1. 創(chuàng)建一個車票接口
2. 創(chuàng)建一個實現(xiàn)類-火車票
3創(chuàng)建車票的工廠類,使用享元模式
普通寫法每次都new會消耗資源和內存,甚至導致OOM
4. 使用享元創(chuàng)建實例,

我是今陽,如果想要進階和了解更多的干貨,歡迎關注公眾號”今陽說“接收我的最新文章