¿ Que es Agenor ?

Lo definimos como una librería que nos proporciona una estructura básica de programación, en el lenguaje PHP, bajo el paradigma de orientación a objetos y usando un derivado del patrón arquitectónico MVC (Modelo Vista Controlador), que su cometido es separar el modelo de datos de las vistas o interfaz de usuario. En la definición, mencionamos un derivado de MVC, nosotros optamos por MVA Modelo Vista Adaptador o Controlador Mediador (Mediating-Controller). La diferencia es la forma en que se interrelacionan los tres componentes del patrón.

Esquema Modelo MVC
[Figura de relacionamiento MVC]

En el MVC, el controlador recibe una petición que proviene de la vista, este va a responder modificando el modelo, como la vista está observando al Modelo en todo momento, cuando se produce un cambio en este, la vista se actualiza por si sola. MVA persigue la misma finalidad de separar el modelo de datos de las vistas, lo único que lo realiza de diferente forma, opta por no relacionar de manera alguna la vista con el modelo.

Esquema Modelo MVA
[Esquema MVA]

Con este esquema se observa que, la única forma de relacionamiento que tienen la vista y el modelo es a través del Adaptador (o controlador mediador) , por lo cual el único que tiene conocimiento de que existe un modelo y una vista es el adaptador. MVA digamos es más estricto que MVC, pues la vista está totalmente desacoplada del Modelo, de hecho no la conoce.

Que logramos al usar este patrón:
  • Muchas vistas pueden acceder indirectamente al Modelo usando un mismo Adaptador.
  • Las vistas se olvidan del modelo de datos pues el adaptador es quien se comunica con el modelo (No necesitan estar observando si cambia el modelo).
  • Podemos tener diferentes Adaptadores para cada par de Modelos – Vistas.
  • Las vistas contendrán código más tonto, pues ahora el Adaptador es quien se relaciona con el modelo.
En base a estas ventajas es que nos decidimos por usar el patrón MVA. Es de destacar que no se pretende realizar un FrameWork, si no una librería con algunas utilidades básicas para el desarrollo de una aplicación web.
Fuente: Sergi Dote Teixidor