Я пишу приложение для Android, которое получает обновления местоположения и отправляет запросы в веб-службу.Приложение выполняет несколько действий и использует локальный Сервис в качестве контроллера.Проблема в том, что эта служба «контроллера» быстро превращается в анти-шаблон Blob / God.Я пытаюсь найти лучший способ рефракторинга кода.
Почти все функции являются асинхронными, так как http-клиент должен работать в отдельном потоке.Большинство вызовов метода передают слушатели, чтобы получить ответ от сервера.Обновления местоположения также получены через слушателя.Все эти слушатели в настоящее время реализованы как внутренние классы в моей локальной службе.Теперь у меня есть около 10 внутренних классов внутри моей локальной службы.Я не понимаю, как я могу переместить этих слушателей в отдельные классы, так как им нужен доступ к состоянию, хранящемуся в Сервисе.Я попытался реализовать гибридный класс синглтон / наблюдатель, который обрабатывает все состояния, получая обновления от каждого из слушателей, а затем передавая их любым зарегистрированным наблюдателям, но это также не является хорошим решением, поскольку у него есть все проблемы, связанные с глобальным состоянием итрудно следить за ходом программы из одного места в другое.После переписывания, рефакторинга и переписывания я теперь совершенно сбит с толку и не знаю, что делать.Любой совет?