Использование шаблона Flyweight в приложении на основе базы данных

StackOverflow https://stackoverflow.com/questions/1818425

  •  10-07-2019
  •  | 
  •  

Вопрос

Может ли кто-нибудь дать мне пример ситуации в приложении на основе базы данных, где мне следует использовать шаблон Flyweight?

Как я могу знать, что я должен использовать шаблон веса в точке в моем приложении?

Я выучил легкий вес. Но я не могу понять, какое место в моих бизнес-приложениях, управляемых базой данных, можно использовать.

Это было полезно?

Решение

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

Другие советы

Вам следует применять любой шаблон, когда он естественным образом предлагает себя в качестве решения конкретной проблемы, а не искать места в вашем приложении, где вы можете применить данный шаблон.

Цель Flyweight - решить проблемы с памятью, поэтому имеет смысл применять ее только после того, как вы профилировали приложение и определили, что у вас есть множество идентичных экземпляров.

Цвета и Кисти из библиотеки базовых классов приходят на ум в качестве примеров .

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

[Не парень из БД, так что это мое лучшее предположение]

Настоящим бонусом к шаблону flyweight является то, что вы можете повторно использовать данные, если это необходимо; Другой пример - обработка текста, где в идеале у вас должен был бы быть объект для каждого символа. в вашем документе, но это потребляет слишком много памяти, поэтому свободная память позволяет хранить только одно уникальное значение, которое вам нужно.

Второй (и, возможно, самый простой) способ взглянуть на него - это как пул объектов, только вы используете пул для каждого поля. уровень в отличие от «на объект» уровень.

На самом деле, теперь, когда я об этом думаю, мало чем отличается использование (сравнительно небольшого) фрагмента памяти в c (++), поэтому храните некоторые необработанные данные, которые вы используете для манипуляции с указателями, чтобы извлечь из них материал.

[ См. эту статью в Википедии ].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top