解決問題
大量相同(相似)小對(duì)象造成的內(nèi)存占用問題熏兄。比如文本編輯器,如果對(duì)每個(gè)字符對(duì)生成一個(gè)對(duì)象(要涉及字符、字體等)沸毁,將會(huì)是一個(gè)非常龐大的數(shù)據(jù)量。
flyWeight的本質(zhì)是以時(shí)間換空間傻寂,類似于采用常量池的方式息尺,將對(duì)象放大池子中,當(dāng)需要使用該對(duì)象時(shí)疾掰,就建立一個(gè)引用搂誉,它可以極大提高系統(tǒng)的內(nèi)存占用量,對(duì)java可以減少GC對(duì)性能的損耗静檬。
應(yīng)用場(chǎng)景
采用該模式炭懊,對(duì)對(duì)象有一定的要求:
原理圖(UML)
9751DDE7-8C0D-4B54-8952-8CD1BE2301A9.png