Мне нужно создать класс, который будет прослушивать изменения файла, анализировать файл и собирать из него необходимые данные, сохранять эти данные в структуре данных (например, JSONObject
), а затем вызывать метод onDataUpdate(JSONObject data)
каждого слушателя, предоставляя им с разобранным data
.
Я обнаружил недостаток этого подхода, который заключается в том, что каждый слушатель может изменить содержимое переданного не примитивного параметра JSONObject data
.
Я думал о некоторых решениях для этой проблемы , но ни одно из них не кажется наиболее оптимальным. Вот некоторые из них:
- Предоставьте глубокую копию каждому слушателю. Недостаток: может использовать
много процессорного времени и памяти, чтобы создать столько копий, сколько есть слушателей.
- Записать проанализированные данные в файл только для чтения (а затем указать путь к файлу для каждого слушателя). Недостаток: каждому слушателю потребуется повторно проанализировать файл.
- Создайте мою собственную неизменную версию структуры данных (и затем дайте ссылку на экземпляр этого для каждого слушателя).
Есть ли лучший, более элегантный способ сделать это?
Существует ли какое-либо соглашение, в котором говорится, что делать в таких случаях?