2011-01-17 8 views
5

Por lo que he leído, parece ser una mejor práctica en MVVM para que cada Vista tenga su propio ViewModel correspondiente, lo cual tiene sentido, ya que se supone que ViewModel es el modelo de la Vista. En general, la reutilización de ViewModels por diferentes vistas parece desestimarse. Este es siempre el caso? De lo contrario, ¿cuáles son las pautas generales para determinar si un ViewModel se debe reutilizar de esta manera?¿Los ViewModels deben volver a usarse alguna vez por diferentes Vistas? ¿Si es así cuando?

Una situación que puedo pensar en dónde podría ser satisfactorio reutilizar un ViewModel con una vista diferente es cuando dos vistas utilizan exactamente los mismos datos del modelo y las vistas mismas representan los datos de manera diferente. Si las Vistas pueden manejar la representación de los mismos datos en diferentes formas, un ViewModel podría servir a cada Vista de manera efectiva.

Respuesta

8

La razón por la que tenemos reglas es para que piense antes de romperlas.

Es decir: no hay nada de malo con el uso del mismo modelo de vista para dos vistas similares. Debes tener mucho cuidado de que tus dos puntos de vista no diverjan, dejándote con un modelo de vista que intenta hacer dos cosas diferentes.

Es por eso que la recomendación es tener un modelo de vista por vista. Aunque esto podría llevar a la duplicación, facilitará el mantenimiento de las vistas a largo plazo.

En cuanto a la duplicación, no hay nada de malo con las clases de viewmodel que tienen una clase base compartida.

+0

No podría haberlo puesto mejor. No veo nada de malo en comenzar con la misma máquina virtual para múltiples vistas y luego dividirlas y/o extraer un antecesor común cuando surja la necesidad (recuerde YAGNI). –

+0

Eso parece lógico. Gracias. – foven

Cuestiones relacionadas