none
Архитектура приложения и MVVM RRS feed

  • Вопрос

  • Доброго времени суток. Есть плеер для ВК, писался по наитию, без соблюдения паттернов и тд, в итоге появилась проблема читабельности кода и также отсутствие разделения логики и представления. Решил выполнить рефакторинг с переходом на MVVM. Возникли вопросы по проектировке модели. Как было:
    Классы Трек, Плейлист(коллекция треков, свойста) управлял этим всем класс Менеджер, который хранил плейлисты, уведомлял Ui, отвечал за очередь воспроизведения, за загрузку и установку коллекций. Как работать с плейлистом определяется по его имени.
    При переходе на новый паттерн возникли вопросы:
    1. какой класс должен отвечать за загрузку и создания коллекции, то есть должен ли плейлист содержать метод для отправки данных для загрузки или этим должен распоряжаться старший класс, который хранит плейлисты?

    2. Как идентифицировать плейлист: в принципе строка(название) вполне пригоден.

    3. Как лучше организовать архитектуру, структуру классов. Какой отвечает за управление воспроизведением (полей пауз превиос некст и т.д.), какой за добавление, удаление. сортировку треков.

    Пы.сы. писать со смарта ужас. Растолкуйте по подробнее, как правильнее, как лучше, как удобнее.
    24 августа 2014 г. 20:43

Ответы

  • Добрый день.

    1. Классы модели в большинстве случаев должны содержать только свойства и, может быть, служебные методы для работы с ними. Например, переопределенный метод ToString.

    Для работы с хранилищем данных (из которого вы выбираете объекты модели и в которое сохраняете), я обычно делаю отдельный класс, с таким интерфейсом, который бы не пришлось переделывать, если физическое хранилище поменяется.

    ViewModel отвечает за логику. Т.к. в общем случае, у вас создается ViewModel, он, посредством класса для работы с хранилищем, загружает коллекцию плейлистов в свое свойство, которое отображается в интерфейсе через Binding. И т.д.

    2. Если можно, то и используйте.

    3. Все что вы здесь написали, это ViewModel.

    25 августа 2014 г. 6:48
    Отвечающий