Как реализовать шаблон flyweight в php? - PullRequest
8 голосов
/ 23 февраля 2010

Это его определение:

Используйте обмен для поддержки большого числа мелкозернистых объектов эффективно.

Но я не могу понять, что именно это означает.

Можете ли вы уточнить с крошечной демонстрацией?

1 Ответ

12 голосов
/ 23 февраля 2010

Шаблон Flyweight полезен, если вам нужно большое количество экземпляров определенного типа. Вы изолируете одинаковые для всех этих данных данные (внутреннее состояние) в общий объект. Вы сохраняете только данные, которые варьируются для каждого экземпляра, в самих экземплярах (внешнее состояние). Преимущество заключается в меньшем потреблении памяти.

Это распространенная модель в игровой индустрии, где обычным примером являются солдаты на поле боя. Все солдаты имеют одинаковое графическое представление и одинаковое оружие, но их положение и здоровье различны. Внешним состоянием будет тогда только их здоровье и координаты x / y / z на поле битвы, в то время как все остальное будет в Flyweight.

PHP Реализации этого шаблона легко найти в Интернете. Например

...