Использование шаблона Flyweight в приложении на основе базы данных - PullRequest
2 голосов
/ 30 ноября 2009

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

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

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

Ответы [ 3 ]

3 голосов
/ 30 ноября 2009

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

2 голосов
/ 30 ноября 2009

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

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

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

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

1 голос
/ 30 ноября 2009

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...