解決問(wèn)題
大量相同(相似)小對(duì)象造成的內(nèi)存占用問(wèn)題。比如文本編輯器,如果對(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