Flyweight享元(結構型模式)

2022-03-15 09:56:33 字數 544 閱讀 4081

物件導向的代價

物件導向很好的解決了系統抽象性的問題,但在某些特殊的應用中,由於物件的數量太大,採用物件導向會給系統帶來難以承受的記憶體開銷。

動機(motivation)

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

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

意圖(intent)

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

**uml

要點物件導向很好地解決了抽象性的問題,但是作為乙個執行在機器中的程式實體,我們需要考慮象的代價問題。flyweight設計模式主要解決物件導向

的代價問題,一般不觸及物件導向的抽象性問題。

flyweight採用物件共享的做法來降低系統中物件的個數,從面降低細粒度物件給系統帶來的記憶體壓力。在具體實現方面,要注意物件狀態的處理。

物件的數量太大從而導致物件記憶體開銷加大---什麼樣的數量 才算大?這需要我們仔細的根據具體應用情況進行評估,而不能憑空臆斷。

結構型模式 flyweight 享元

1.意圖 運用共享技術有效地支援大量細粒度的物件。2.適用性 flyweight模式的有效性很大程度上取決於如何使用它以及在何處使用它。當以下情況都 立時使用flyweight模式 乙個應用程式使用了大量的物件。完全由於使用大量的物件,造成很大的儲存開銷。物件的大多數狀態都可變為外部狀態。如果刪除物...

Flyweight享元模式(結構型模式)

目錄 意圖 intention 結構 structure 兩個狀態 flyweight模式的幾個要點 適用場景 example 運用共享技術有效地支援大量細粒度的物件。其中,flyweight抽象享元物件 為具體享元角色規定了必須實現的方法,而外部狀態是以引數的形式傳入此方法。concretefly...

享元模式(Flyweight) 結構型

1 基礎知識 定義 提供了減少物件數量從而改善應用所需的物件結構的方式。特徵 運用共享技術有效支援大量細粒度的物件。本質 分離與共享。使用場景 1 如果乙個應用程式使用了大量的細粒度物件,可以使用享元模式來減少物件數量。如果由於使用大量的物件,造成很大的儲存開銷,可以使用享元模式來減少物件數量,並節...