Моделирование взаимозависимых объектов - PullRequest
0 голосов
/ 09 июня 2018

Моему приложению (Android) требуется функция сетевого сканера.

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

У меня есть два класса:

  • Устройство, которое содержит адрес и свойство available (bool) (которое может быть установлено методом checkAvailable),

  • NetworkerScanner, который расширяет Thread и создает экземпляры всех Device s.

  • В конце концов, я планирую иметь объект, который является наблюдателем в коллекции Observable, которая будет содержать все доступные устройства.

Добавление доступных устройств в коллекцию неочевидно.

Алгоритм

Let col be a Observable Collection
For each possible address
    Instantiate a corresponding Device
    On a new, separate thread, get this new device's availability. 
    If it's available, then add it to col. 

Проверка доступности устройства невозможнанемедленное (я использую Volley, который использует обратные вызовы).

Как я могу из своего обратного вызова HTTP добавить устройство в коллекцию?

У меня есть несколько идей:

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

  • Я мог бытакже передайте ссылку на коллекцию методу checkAvailable, но я чувствую, что это уловка (и уловка неправильного типа уловок).

  • При вызове checkAvailable, передайте ему ссылку на onResponseListener (метод обратного вызова для HTTP-запроса).Так как я создал бы слушателя в моем NetworkScanner, я мог захватить локальную коллекцию.Но я чувствую, что это неправильно.Как ... очень неправильно.

Пожалуйста, предложите.

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