He estado leyendo sobre Model View Controller, Model View Presenter, Model View ViewModel, y así sucesivamente, y en general, el concepto subyacente parece bastante simple de entender: mantenga las visuales bonitas y las agallas científicas tan separadas e ignorantes entre sí como posible. No conseguir la lógica mantequilla de maní en el chocolate de diseño; genial, me gusta eso.
El problema es que todavía estoy un poco confuso en cuanto a esa tercera parte ... la que no es modelo o vista. Todo el mundo parece tener su propia idea de cómo llamarlo, qué debería hacer, qué es lo correcto, qué es lo que está mal ... y me estoy volviendo loco tratando de descubrir cuándo un presentador se convierte en un modelo de vista y cuándo una vista no debería t haciendo eso porque ese es el trabajo del presentador y--
Estoy divagando.
En lugar de pedirle a alguien que explique la diferencia entre ellos, porque eso ya se ha hecho una y otra vez (lo sé; he leído más artículos de los que puedo contar), tendría curiosidad por escuchar los pensamientos de un pocos programadores en el modelo que yo mismo he improvisado.
Dicho esto, ¿cómo clasificaría este diseño y, quizás lo más importante, ve algo de esto que obviamente apesta? Claro, me encantaría saber que me está yendo bien si este es realmente un diseño sólido, pero preferiría recibir consejos sólidos sobre elogios.
Nota: ¿Usaré "the Bridge" para la misteriosa tercera parte de Model-View-? para evitar cualquier sugerencia subconsciente de lo que "debería" ser.
Modelo
- Es la autoridad en datos.
- Recibe información sobre los cambios solicitados desde el puente.
- Contiene y realiza toda la lógica de cómo los datos se relacionan con otros datos.
Informa al Bridge cuando los datos cambian (para los datos en los que el Bridge ha expresado interés).Edición de redacción: permite a los suscriptores externos (sobre los cuales no sabe nada) monitorear su estado o resultados de cálculo.- Tiene cero conocimiento de la Vista.
Ver
- Se preocupa por proporcionar al usuario una forma de ver y manipular datos.
- Recibe información sobre actualizaciones de datos del Bridge.
- Contiene y realiza toda la lógica sobre cómo presentar datos y controles al usuario.
- Informa al Puente cuando el usuario ha realizado una acción que (posiblemente) afecta al Modelo.
- Informa al Puente qué información le interesa.
- Tiene cero conocimiento del modelo.
Puente
- Es el coordinador y traductor entre el Modelo y la Vista.
- Realiza los cambios de formato apropiados en la información que se pasa entre el Modelo y la Vista.
- Conserva información sobre "quién necesita saber qué".
- Tiene conocimiento tanto del modelo como de la vista.
Notas adicionales
- En programas más complicados, es común que haya múltiples Modelos. En esta situación, el Bridge generalmente se encarga de coordinar / traducir entre los múltiples Modelos y, por lo tanto, se convierte en la autoridad sobre qué modelos de protocolo de llamada / API / diseño deben construirse. (por ejemplo, si está creando un programa de juego de cartas y desea construir un modelo alternativo de barajado de barajas, debe usar el Puente para determinar qué funciones son necesarias para una comunicación adecuada con el Puente).
- En pequeños programas simples con una sola Vista y Modelo, es común que el Puente "asuma" qué funcionalidad está disponible en ambos lados. Sin embargo, a medida que los programas se vuelven más complejos, se recomienda que las Vistas y los Modelos reporten su funcionalidad al Puente para que pueda evitar ineficiencias y suposiciones erróneas.
Creo que eso casi lo cubre. Por supuesto, agradezco cualquier pregunta que pueda tener sobre el diseño que tiendo a usar, y también animo cualquier sugerencia.
Y como siempre, gracias por tu tiempo.