設計模式13 享元模式(flyweight)

2021-10-09 02:57:06 字數 488 閱讀 6759

在軟體系統採用純粹物件方案的問題在於大量細粒度的物件會很快充斥在系統中,從而帶來很高的執行時代價——主要指記憶體需求方面的代價。

如何在避免大量細粒度物件問題的同時,讓外部客戶程式仍然能夠透明地使用物件導向的方式來進行操作?

運用共享技術有效的支援大量細粒度的物件。

——《設計模式》gof

我們定義字型類時會使用唯一性標識來說明乙個字型物件。

class

font

};

這樣我們需要每種都定義一種類,導致大量的字型類存在,我們可以定義乙個字型的池,當該字型的類物件已經存在於該池內就不用再建立該類物件,這類似於word中的操作。

class

fontfactory

else

}void

clear()

};

當不存在時才建立該類物件並新增到字型池中。

《設計模式13 享元模式

享元模式是乙個比較好理解的模式,簡單而言,就是共享元素的意思。那共享元素有什麼用?通常這個模式是與工廠模式一起使用。我們知道工廠模式是用於建立物件的,沒呼叫一次就會返回乙個物件。如果我們過多的呼叫呢?每次返回乙個新的物件會導致記憶體占用很多。有時候我們並不需要乙個新的物件,只要獲得之前所建立的物件。...

設計模式(13) 享元模式

概念 享元模式 flyweight pattern 主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。主要解決 在有大量物件時,有可能會造成記憶體溢位,我們把其中共同的部分抽象出來,如果有相同的業務請求,直...

設計模式(享元模式)

享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...