標簽(空格分隔):享元模式 內(nèi)部狀態(tài) 外部狀態(tài)
享元模式: 運用共享的技術(shù)有效地支持大量細粒度的對象
享元模式就像它的名稱一樣魁亦,將一個元素(對象)恋昼,提供可以共享的方法系吩,減少系統(tǒng)內(nèi)存開銷笑诅,降低對象創(chuàng)建與銷毀的時間成本吐辙。
享元模式主要解決:在有大量對象時宣决,有可能會造成內(nèi)存溢出,我們把其中共同的部分抽象出來昏苏,如果有相同的業(yè)務(wù)請求尊沸,直接返回在內(nèi)存中已有的對象,避免重新創(chuàng)建贤惯。
優(yōu)點:減少對象的創(chuàng)建和銷毀的開銷洼专,降低系統(tǒng)的內(nèi)存,防止由于大量對象的創(chuàng)建導(dǎo)致的內(nèi)存溢出問題孵构,提成運行效率屁商,增加程序的魯棒性。
在介紹單例模式的時候颈墅,提到過一種單例模式的擴展蜡镶,多例模式雾袱。多例模式可以提供有限個自己的實例被其他程序使用,這些實例的創(chuàng)建和管理都由多例類來控制帽哑。這個時候當多例類的實例被其他多個業(yè)務(wù)實體類共享和使用谜酒,這就實現(xiàn)了我們這里說的享元模式。
所以妻枕,享元模式可以看作是工廠類(多例模式中的多例類僻族,自己創(chuàng)建并管理實例),單例模式(多例模式中的一個實例)屡谐,以及組合模式(業(yè)務(wù)類需要持有實例來進行業(yè)務(wù))三種模式組成的
享元模式常見于各種數(shù)據(jù)庫連接池述么、線程池等相關(guān)組件中。其中的數(shù)據(jù)庫鏈接/線程池中的線程都是常用的愕掏,可被共享的對象度秘,這個時候創(chuàng)建一個共享池來管理這些公用可被共享的對象就是相當有必要的,有效降低鏈接/線程的創(chuàng)建和銷毀開銷饵撑,提高系統(tǒng)性能剑梳。