MVVM и неявное приведение от модели к модели представления - PullRequest
1 голос
/ 25 июня 2010

После некоторой борьбы за поддержание отношений модель-представление-модель (например, создание экземпляров vm для каждого экземпляра модели) у меня появилось несколько идей, которые могут быть довольно спорными, но мне любопытны мнения.

Что если класс VM был создан для поддержки статического списка контейнеров для экземпляров модели. Это могут быть (или даже должны) быть слабые ссылки, поэтому всякий раз, когда экземпляр класса модели выходит из области видимости, его viewmodel автоматически удаляется. Другой вариант - повторно использовать экземпляры vm.

Другой идеей, которая будет хорошо работать с первым, может быть создание неявного оператора приведения из модели в класс viewmodel. Я всегда получал один и тот же экземпляр vm, когда приводил из экземпляра модели.

Что вы думаете об этом? Это серьезное нарушение правил и шаблона MVVM?

// редактировать Вероятно, я должен также указать, что послужило причиной этого: в моем приложении есть несколько мест, где я использую один из моих классов моделей и мне нужны соответствующие ссылки на vm. В каждом таком месте мне нужно наблюдать за коллекцией и реагировать на изменения - создавать или удалять экземпляры vm. По сути, это один и тот же код, который повторяется во многих местах => Я думал о создании только одного места для этого (неявное приведение - просто конфетка, которая не требуется для решения реальной проблемы). Или, может быть, вместо статических списков я должен создать менеджер, который будет обрабатывать создание экземпляров модели представления для всех моих классов?

1 Ответ

0 голосов
/ 25 июня 2010

Прежде всего, я не уверен, что ваши идеи нарушают шаблон MVVM. На мой взгляд, не так важно заполнять шаблоны в каждом случае. Шаблон в моих глазах предлагает стратегии для решения проблем. В большинстве случаев не стоит следовать шаблону 100% во что бы то ни стало. Если есть прагматичное решение, вы должны использовать это. Конечно, это должны быть решения, которые приведут вас к вашим целям, например, модульное тестирование, разделение пользовательского интерфейса и прикладной логики и т. д.

В любом случае, когда я впервые читал вашу статью, я подумал, что реализация оператора приведения - это хорошая идея. Но если я не ошибаюсь, вам нужно сослаться на модель представления в вашей модели. Я всегда стараюсь избегать этого, чтобы максимизировать возможности повторного использования. Но я думаю, что наличие такой ссылки не нарушает закономерность. Может быть, кто-то еще может рассказать об этом подробнее.

Для меня ваша идея менеджера - лучший способ. Я использую аналогичный способ для создания моделей представления. Это зависит от того, сколько моделей представлений вам нужно создать, но вы должны скорее создавать новые модели представлений, чем повторно использовать существующие. Где-то я читал, что модели представления должны быть своего рода конечным автоматом для представления. Следуя этой идее, вы никогда не знаете, в каком состоянии находится модель представления, когда вы снова ее используете. Поэтому предпочтительным способом является создание новой модели представления.

Просто некоторые мысли! Может быть, есть и другие идеи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...