2010-02-23 82 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