Ответ 1
Нет ответа на этот вопрос. Хороший дизайн OO не зависит от Android. Я бы сказал, что это правило - если инфраструктура дает вам объект высокого уровня (например, Service в случае Android), который подходит вашему прецеденту, используйте его. Если вы обнаружите, что вы делаете POJO-реализации одних и тех же вещей, которые вы получаете бесплатно с помощью фреймворка, перейдите в рамки.
Что касается разделения проблем, это стандартный материал OO. Не помещайте что-либо в свои классы активности, это не задание Activity. Переполнение операции с помощью методов и свойств, которые требуется Управлению, но на самом деле не является действительностью Activity, - затрудняет понимание вашей деятельности.
Я обычно отделяю вещи от подпакетов в своих приложениях.
- com.myname.myproject.app - базовые классы, глобальная функциональность приложения
- com.myname.myproject.net - сетевые материалы, связанные с сетью утилиты.
- com.myname.myproject.data - db помощники, поставщики и т.д.
- com.myname.myproject.model - объектная модель
и др.
Что касается связи внутри вашего приложения...
У меня всегда есть собственный класс приложений, который я регистрирую в манифесте. Таким образом, когда у меня есть контроллеры и помощники, которые должны быть "единственным экземпляром", мне не нужно делать все эти сумасшедшие потокобезопасные одноэлементные файлы... Я просто сохраняю одну глобальную копию.
RoboGuice - это инфраструктура инъекций зависимостей, которая делает это еще проще для выполнения... определенно стоит посмотреть. Если это вас интересует, группа Google для RoboGuice отличная и постоянно заполнена создателями структуры, которые могут в принципе ответить на все, что вам нужно.
В связи с подключением к приложениям я использую один экземпляр класса Controller и State для хранения состояния и выполнения общих задач, и я обычно использую BroadcastIntents для связи с Activity from Services