8

这是它的定义:

使用共享有效地支持大量细粒度对象。

但我无法弄清楚它的确切含义。

你能用一个小演示详细说明吗?

4

1 回答 1

12

如果您需要大量特定类型的实例,享元模式很有用。您将所有这些实例(内在状态)相同的数据隔离到一个共享对象中。您仅将每个实例变化的数据保留在实例本身(外部状态)中。好处显然是更少的内存消耗。

这是游戏行业的常见模式,通常的例子是战场上的士兵。所有士兵共享相同的图形表示和相同的武器,但他们的位置和健康状况不同。外部状态将只有他们的健康和战场上的 x/y/z 坐标,而其他一切都在 Flyweight 中。

这种模式的 PHP 实现很容易在 Web 上找到。例如

于 2010-02-23T07:51:43.810 回答