Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Hixon10
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 153
1

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

03.09.2012, 21:28. Просмотров 3076. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Я решил написать в первый раз в своей жизни приложения для 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?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2012, 21:28
Ответы с готовыми решениями:

Архитектура клиент серверного приложения
Добрый день. Возникла идея проекта, но как реализовать его я не представляю....

Архитектура клиент-серверного приложения с off-line режимом
Доброго дня. Столкнулся со следующим вопросом на тестировании: Создаётся...

Правильная архитектура Android приложения, использующего restful api
Добрый день! есть задача написать приложение. Главный функционал- отображение...

Назовите приемущества клиент-серверного Android-приложения, над Web-приложением
Скажите мне вот если вам заказчик скажет, а в чем приемущества андройда, ну...

Простой IRC клиент
Господа, помогите нубу в программированию под андроид сделать простой...

5
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
03.09.2012, 21:40 2
если есть опыт программирования на java:
почитайте про GOF паттерны + книжка Голощапова по программированию на андройде. - это порог входа.
после этого потренируйтесь писать приложения работающие с сетью, а потом уже беритесь за свой проект.
1
Hixon10
6 / 6 / 0
Регистрация: 17.10.2011
Сообщений: 153
03.09.2012, 21:46  [ТС] 3
Цитата Сообщение от YAUHEN Посмотреть сообщение
если есть опыт программирования на java:
почитайте про GOF паттерны + книжка Голощапова по программированию на андройде. - это порог входа.
после этого потренируйтесь писать приложения работающие с сетью, а потом уже беритесь за свой проект.
Опыта на JAVA нет, но я немного писал на c#.
Спасибо за совет, посмотрю, что это за книга.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.09.2012, 21:48 4
Цитата Сообщение от Hixon10 Посмотреть сообщение
Как я понимаю, под каждый из этих layout нужно создать ViewModel и модель?
да, каждое окно - это активити.
а вот моделей может и вовсе не быть, особенно если иметь ввиду только ContentProvider и Service. хотя модель, это более общее понятие.

Цитата Сообщение от Hixon10 Посмотреть сообщение
все операции с сетью нужно выносить в отдельный поток?
да.


Цитата Сообщение от Hixon10 Посмотреть сообщение
Вроде бы нужны классы, которые будут реализовывать такие действия, как редактирование настроек, отображение списка ников и т.д. Однако я думаю, что все эти классы – это типичные представители Модели в паттерне MVVM.
PreferenceActivity, ListActivity и т.д. и это не модели, а ViewModel.


Цитата Сообщение от Hixon10 Посмотреть сообщение
Все действия пользователя в моделях перенаправлять на объект класса Commands?
BroadcastReceiver
1
silentnuke
Android Programmer
139 / 140 / 10
Регистрация: 08.12.2010
Сообщений: 421
05.09.2012, 21:16 5
Цитата Сообщение от V0v1k Посмотреть сообщение
BroadcastReceiver
надеюсь это была неудачная шутка?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.09.2012, 22:36 6
нет, он предназначен именно для обработки событий
Цитата Сообщение от Hixon10 Посмотреть сообщение
Например, если пришла команда от сервера 450 – показать человеку список, или, например, если человек написал в чат /msg NICKNAME msg, то нужно открыть окно личной беседы NICKNAME и отправить msg.
0
05.09.2012, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2012, 22:36

Клиент-сервер для android
Здравствуйте. Мне нужно сделать следующее:сервер с базой данных и клиенты на пк...

Выбор книги или статей для создания приложений под Android (клиент для сервера)
С какой книги посоветуете начать изучение (желательно сразу на 4 версии). ...

Клиент-сервер приложение для android
Ситуация такая, у меня на компе стоит программка, которая парсит авито, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru