2010-02-23 90 views
7

這是它的定義:如何在php中實現flyweight模式?

使用共享,以支持大量的細粒度對象有效的 。

但我無法弄清楚它究竟意味着什麼。

你能用一個小小的演示來詳細說明嗎?

+2

我使用'php flyweight pattern',並檢查了前3個結果。每個人都獲得了全面的教程和廣泛的例子。 – 2010-02-23 04:20:55

回答

11

如果您需要大量特定類型的實例,則Flyweight模式很有用。您將所有這些實例(內在狀態)的數據隔離爲共享對象。您只保留實例本身(外部狀態)中每個實例不同的數據。好處是內存消耗更少。

這是遊戲行業中常見的模式,通常的例子是戰場上的士兵。所有士兵共享相同的圖形表示和相同的武器,但他們的位置和健康狀況是不同的。外在狀態只會是他們在戰場上的健康和x/y/z座標,而其他的一切都會在Flyweight中。

這個模式的實現很容易在網上找到。例如

+0

好,一如既往的戈登,好榜樣+1 – 2013-11-18 04:57:45