一.什么是享元模式?
享元模式主要用于減少同一類對(duì)象的大量創(chuàng)建,以減少內(nèi)存占用,提高項(xiàng)目流暢度,在iOS開發(fā)中,大家肯定都用過UITableViewCell,UICollectionViewCell,這兩個(gè)類在使用過程中就使用了享元模式,工作原理基本就是:利用重用池重用思想,創(chuàng)建頁面可顯示的cell個(gè)數(shù)的對(duì)象,在頁面滾動(dòng)過程中監(jiān)聽每個(gè)cell的狀態(tài),從頁面消失的cell被放回重用池,將要顯示的cell先去重用池中去取,如果可以取到,則繼續(xù)使用這個(gè)cell,如果沒有多余的cell,就重新創(chuàng)建新的,這樣即使你有100條數(shù)據(jù),也僅僅只會(huì)創(chuàng)建頁面可顯示個(gè)數(shù)的cell對(duì)象,這樣就大大減少了對(duì)象的創(chuàng)建,實(shí)現(xiàn)了大量?jī)?nèi)存占用,導(dǎo)致內(nèi)存泄露的問題

二.為什么要使用享元模式?
一個(gè)完美的應(yīng)用,不僅僅是界面和功能上的完美,如果一個(gè)應(yīng)用擁有出眾的界面,強(qiáng)大的功能,但是用戶一使用
就卡的不行,或者說有延遲,這樣用戶會(huì)是什么感覺,當(dāng)然蘋果也許不是很明顯,即使你的應(yīng)用再爛,真正在真機(jī)上跑的時(shí)候也不會(huì)出現(xiàn)類似android卡頓的那樣,但是你要是細(xì)心了,還是會(huì)有點(diǎn)發(fā)現(xiàn)的,作為開發(fā)者我們,應(yīng)該去解決這樣的問題,是我們代碼的問題,我們就要去解決
三.怎么使用享元模式?
下面我直接使用UITabelView舉例:
1.重新cell創(chuàng)建方法:

2.具體實(shí)現(xiàn):

3.打印:

4.效果圖:

從代碼中,我們可以看出我需要顯示100個(gè)cell,但是實(shí)際只創(chuàng)建了8個(gè)cell,內(nèi)存占用上相比100個(gè)cell對(duì)象的內(nèi)存縮減到了原來的十分之一,流暢度可想而知
菜鳥教程: http://www.runoob.com/design-pattern/flyweight-pattern.html
百度百科: https://baike.baidu.com/item/享元模式/10541959?fr=aladdin
其他設(shè)計(jì)模式
工廠模式:http://www.itdecent.cn/p/6f3ffb1397f7
責(zé)任鏈模式:http://www.itdecent.cn/p/30475126694a
觀察者模式:http://www.itdecent.cn/p/a6a6e5a8e8bd