Передача параметров слушателям (соглашение Java / OOP / лучшие практики) - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно создать класс, который будет прослушивать изменения файла, анализировать файл и собирать из него необходимые данные, сохранять эти данные в структуре данных (например, JSONObject), а затем вызывать метод onDataUpdate(JSONObject data) каждого слушателя, предоставляя им с разобранным data.

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

Я думал о некоторых решениях для этой проблемы , но ни одно из них не кажется наиболее оптимальным. Вот некоторые из них:

  1. Предоставьте глубокую копию каждому слушателю. Недостаток: может использовать много процессорного времени и памяти, чтобы создать столько копий, сколько есть слушателей.
  2. Записать проанализированные данные в файл только для чтения (а затем указать путь к файлу для каждого слушателя). Недостаток: каждому слушателю потребуется повторно проанализировать файл.
  3. Создайте мою собственную неизменную версию структуры данных (и затем дайте ссылку на экземпляр этого для каждого слушателя).

Есть ли лучший, более элегантный способ сделать это? Существует ли какое-либо соглашение, в котором говорится, что делать в таких случаях?

...