Внедрение конкретной реализации модели на лету [Robotlegs] - PullRequest
0 голосов
/ 25 июля 2011

Возможен ли впрыск модели на лету? Другими словами, если я запрашиваю модель типа IPhotoModel, я должен получить одну из ее реализаций, основанную на текущем состоянии представления. Если я смотрю на страницу пользователя, я должен получить реализацию этой модели для конкретного пользователя. Если я смотрю на LocationPage, я должен получить реализацию для конкретного местоположения.

В настоящее время единственный способ, который я вижу, - это ввести команду, которая задает отображение модели, с конкретной, основанной на текущем состоянии просмотра ...

что-то вроде ...

injector.mapValue (IPhotoViewModel, injector.getInstance (UserPhotoViewModel)) или injector.mapValue (IPhotoViewModel, injector.getInstance (LocationPhotoViewModel))

это лучший способ? Я действительно не хочу вводить много логики связи вне контекста, но ...

1 Ответ

2 голосов
/ 25 июля 2011

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

Я не вижу это как "так много"логика связи.Команда просто устанавливает программу на основе текущего состояния приложения.На самом деле нет особой разницы между использованием команды для изменения состояния инжектора по сравнению с вашим собственным состоянием модели.

Вы можете даже обнаружить, что вы можете повторно использовать свои команды отображения инъекций в приложениях, тогда как вы не сможете использовать повторно.весь контекст.

HTH;

Эми

...