一.什么是享元模式?
享元模式主要用于減少同一類對象的大量創建,以減少內存占用,提高項目流暢度,在iOS開發中,大家肯定都用過UITableViewCell,UICollectionViewCell,這兩個類在使用過程中就使用了享元模式,工作原理基本就是:利用重用池重用思想,創建頁面可顯示的cell個數的對象,在頁面滾動過程中監聽每個cell的狀態,從頁面消失的cell被放回重用池,將要顯示的cell先去重用池中去取,如果可以取到,則繼續使用這個cell,如果沒有多余的cell,就重新創建新的,這樣即使你有100條數據,也僅僅只會創建頁面可顯示個數的cell對象,這樣就大大減少了對象的創建,實現了大量內存占用,導致內存泄露的問題
二.為什么要使用享元模式?
一個完美的應用,不僅僅是界面和功能上的完美,如果一個應用擁有出眾的界面,強大的功能,但是用戶一使用
就卡的不行,或者說有延遲,這樣用戶會是什么感覺,當然蘋果也許不是很明顯,即使你的應用再爛,真正在真機上跑的時候也不會出現類似android卡頓的那樣,但是你要是細心了,還是會有點發現的,作為開發者我們,應該去解決這樣的問題,是我們代碼的問題,我們就要去解決
三.怎么使用享元模式?
下面我直接使用UITabelView舉例:
1.重新cell創建方法:
2.具體實現:
3.打印:
4.效果圖:
從代碼中,我們可以看出我需要顯示100個cell,但是實際只創建了8個cell,內存占用上相比100個cell對象的內存縮減到了原來的十分之一,流暢度可想而知
菜鳥教程: http://www.runoob.com/design-pattern/flyweight-pattern.html
百度百科: https://baike.baidu.com/item/享元模式/10541959?fr=aladdin
其他設計模式
工廠模式:http://www.lxweimin.com/p/6f3ffb1397f7
責任鏈模式:http://www.lxweimin.com/p/30475126694a
觀察者模式:http://www.lxweimin.com/p/a6a6e5a8e8bd