Hixon10 @Hixon10

Архитектура приложения ирк-клиент для андроид?

Доброго времени суток.
Я решил написать в первый раз в своей жизни приложения для android – irc клиент.
Опыта написания под эту платформу у меня нет, да и вообще никогда ничего крупного я не разрабатывал. В связи с этим, у меня возникли проблемы с архитектурой приложения.
Прочитав статью, я понял, что в приложениях под андроид используется паттерн mvvm. В качестве видов используются layout-ы, в качестве ViewModel используются наследники класса Activity, а в качестве моделей – наследники классов ContentProvider и Service.
Немного поразмыслив, я пришёл к тому, что в приложение будут следующие layout: главное окно, окно настроек (там будут конкретные пункты настроек, например, основные настройки, настройки текста и т.д.), окно каналов (вероятно, все каналы и приватные разговоры будут реализованы в одном окне с помощью tab).
Как я понимаю, под каждый из этих layout нужно создать ViewModel и модель?
С другой стороны, подумав, я понял, что мне нужны, как минимум, следующие классы для полноценной работы приложения:
1) Класс Irc, который будет реализовывать основные операции: коннект на сервер, отправка сообщения, прием сообщения, авторизация и т.д. Кстати, вроде бы все операции с сетью нужно выносить в отдельный поток?
2) Класс StringParser, который отвечает за парсинг строк, полученных от сервера или клиента. Класс определяет, что нужно сделать. Например, если пришла команда от сервера 450 – показать человеку список, или, например, если человек написал в чат /msg NICKNAME msg, то нужно открыть окно личной беседы NICKNAME и отправить msg. На вход главного метода в этом классе поступает строка, а на выходе ожидается действие, которое нужно где-то совершить, и какой-то массив информации.
Не очень понятно, как представить эту информацию (действие и информацию). Можно, конечно же, просто создать какой-нибудь массив, но это вроде бы не лучший вариант.
3) Класс Сommands, который, наверное, должен запустить новый поток (класс Irc), который будет работать с сетью. Далее этот класс, наверное, будет получать данные от клиента и сервера, отправлять их классу StringParser и вызывать те команды, которые нужно.
4) Вроде бы нужны классы, которые будут реализовывать такие действия, как редактирование настроек, отображение списка ников и т.д. Однако я думаю, что все эти классы – это типичные представители Модели в паттерне MVVM.

Итак, это было предисловие. Что вам не нравится в том, что я сказал? Как исправить, что делать?
Вопросы:
1) Как пристроить классы Irc, StringParser, Commands в паттерн MVVP?
2) Если классы Irc, StringParser, Commands – это хелперы, то какой жизненный цикл приложения? Человек заходит в программу, грузится основное окно, и, я думаю, создается объект класса Commands. Он, в свою очередь, создает объект класса Irc, который должен работать в новом потоке. Что дальше? Все действия пользователя в моделях перенаправлять на объект класса Commands?
Вопрос задан
Ответы на вопрос 2
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы