В моей игре у меня есть класс Population
, который содержит набор граждан. Каждая совокупность регистрируется с помощью PopulationManager
после создания экземпляра. PopulationManager
содержит ссылку на все Population
объектов в игре; он используется для анализа популяций и быстрого извлечения популяций.Отмена регистрации объекта из диспетчера объектов при сборке мусора (Java)
Многие структуры в моей игре могут содержать Population
. Ex. a Town
содержит Population
. Когда город разрушен, я хочу, чтобы объект населенности также переставал существовать. Однако, даже если я уничтожу город, его объект Population
остается, так как есть ссылка на него в PopulationMananger
.
Есть ли способ удаления ссылки на Population
объекта в PopulationManager
, когда его Town
уничтожается без явного вызова какой-то дерегистрировать (населения) метода в PopulationManager
? Или я буду вынужден удалять ссылку вручную каждый раз, когда город будет уничтожен?
Посмотрите шаблон Observer. –
@SotiriosDelimanolis Спасибо. При первоначальном поиске в Google это похоже на то, что мне нужно. –
@mario_sunny Не совсем :) Это просто причудливый способ назвать «дерегистер» - то, чего вы хотели избежать. Что вам действительно нужно, это 'java.lang.ref.WeakReference'. – Dima