如何在PHP中实现flyweight模式?

时间:2010-02-23 04:08:08

标签: php oop design-patterns flyweight-pattern

这是它的定义:

  

使用共享来支持大数字   有效的细粒度物体。

但我无法弄清楚究竟是什么意思。

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

1 个答案:

答案 0 :(得分:12)

如果您需要大量特定类型的实例,则Flyweight模式非常有用。您将所有这些实例(内在状态)相同的数据隔离到共享对象中。您只保留实例本身(外部状态)中每个实例不同的数据。好处是显着减少了内存消耗。

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

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