Reusable object

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

Reusable object (многоразовый/переиспользуемый объект) — объект, что постоянно заново используется в программе, меняя лишь свои характеристики, вместо удаления и создания нового.

Концепция

Суть в том, что переиспользуемый объект не удаляется после использования, а используется вновь с новыми параметрами, когда до него доходит круг очереди. Т.е. в данной концепции всё решается не временем жизни объектов, а их номером в очереди.

Преимущества

Этот подход куда лучшее подхода со временем жизни, т.к., в отлич. от времени жизни:

  1. Размер очереди фиксирован, поэтому всегда известно сколько максимум может быть объектов в сцене. Т.е. всегда можно точно посчитать уровень производительности при макс загруженности сцены, в отличии от объектов со временем жизни, которых пользователь может создать оч. много за короткий промежуток времени, пока не истекло время жизни у самых старых/первых объектов.
  2. Имеющиеся объекты никогда не исчезают, пока до них не дойдёт очередь, т.е. пока они не станут последними в очереди.

Польза

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

Применение

Концепция используемых заново (переиспользуемых) собираемых динамических объектов наиболее популярна в видеоиграх, где фигурирует множество объектов, и нужна максимальная производительность.

Примеры

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