Применяется ли шаблон проектирования Flyweight для снижения затрат на реализацию? - PullRequest
1 голос
/ 05 апреля 2020

Книга Шаблоны проектирования дает следующую применимость для шаблона проектирования Flyweight (жирный акцент):

Применимость

Эффективность модели Flyweight сильно зависит от того, как и где она используется. Примените шаблон Flyweight, если все из следующих истинны:

  • Приложение использует большое количество объектов.
  • Расходы на хранение высоки, потому что огромного количества объектов.
  • Большая часть состояния объекта может быть сделана extrinsi c.
  • Многие группы объектов могут быть заменены относительно небольшим количеством общих объектов после того, как extrinsi c состояние удалено.
  • Приложение не зависит от идентичности объекта. Поскольку объекты flyweight могут использоваться совместно, тесты идентичности будут возвращать true для концептуально различных объектов.

Вместо затраты на хранение (космические ресурсы), затраты на создание экземпляров (ресурсы времени) также подходят для действительного приложения?

1 Ответ

1 голос
/ 06 апреля 2020

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

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

...