Quizás he estado haciendo el desarrollo de Flex con Frameworks como Cairngorm demasiado tiempo, pero todavía no obtengo MVVM. Soy consciente de que Cairngorm es un framework y MVVM es un patrón de diseño, pero lo que estoy comparando aquí son las implementaciones de Cairngorms de patrones de diseño, principalmente el controlador de vista modelo y el patrón de comando. No me malinterpreten, creo que la idea de vincular una vista a un modelo de vista es excelente y las ventajas en la capacidad de prueba y el flujo de trabajo del programador diseñador son excelentes. Pero hay dos cosas que me molestan: una es programar todas mis acciones con Commands, que, por cierto, también me ha dejado fuera de Cairngorm. Solo en Cairngorm la forma en que implementaron el patrón de comando te dio la ventaja de tener un controlador centralizado para todos tus comandos, que no pareces obtener con MVVM, a menos que me falta algo. Y si pensé que la implementación de los comandos en Cairngorm era intrincada en MVVM es mucho peor, me refiero a tener que crear clases privadas que implementen ICommand para todo lo que hago parece demasiado. Y luego tiene el problema de que no todos los controles implementan comandos por lo que, por ejemplo, si está usando un ListBox, que uso mucho, no tiene suerte; hay soluciones pero todo complicado.¡Todavía no consigo MVVM!
La otra cosa que me molesta es la comunicación entre View Models. En un Controlador de Vista de Modelos estándar usted recopila toda su información en un modelo centralizado que las vistas observan, pero este no parece ser el caso con MVVM, al menos no en los ejemplos que he visto. Entonces, por ejemplo, si tiene un control con una lista que usa para seleccionar un elemento que luego se usa como fuente para diferentes vistas y acciones consiguientes, no me queda claro cómo notifica a todos los cambios sin un modelo centralizado.
Conozco MVVMFoundation y el trabajo de Tom Ershamam sobre WPF Commands Everywhere. Me llamó anticuado, pero creo que para comprender realmente un patrón, debes construir una aplicación que lo use desde cero. Que es lo que estoy haciendo, pero todo el tiempo sigo pensando que debo estar perdiendo algo esencial porque no parezco ser capaz de callar esta pequeña voz en mi cabeza que me sigue diciendo que debe haber una mejor manera.
¡Tienes tanto razón! – Faruz
¿Quizás podría formular sus quejas/dudas en una pregunta? –
La pregunta sería ¿me estoy perdiendo algo con respecto a MVVM o hay una mejor manera? –