Ver Mensaje Individual
  #2  
Antiguo 24-02-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
No precisamente. Al menos en Delphi es difícil alcanzar un patrón MVC perfecto dado el enfoque RAD del IDE y las ayudas que proporciona para hacer binding entre objectos con acceso a datos y componentes de edición.

Lo que quieres hacer es válido, pero te obligará a desarrollar tu propio framework para abstracción de datos ya que pretentes crear un equivalente 1 a 1 entre una clase y una entidad (o un objeto y una tabla). No es imposible, pero si muy tedioso, por ahí Al Gonzalez tiene algo interesante en lo que está trabajando y como el mismo comenta le ha llevado varios años irlo madurando.

Un enfoque un poco más sencillo es que en tu capa de negocios como tu lo dices hagas todo el montaje de las reglas pero sin buscar que se correspondan al 100% con lo que hay en la capa de datos. Asi pues, puedes tener una TFactura que se comunica con una TQFactura y con TQDetFactura que son las querys de la factura y su detalle en la capa de datos. Como sabemos el patron MVC permite que la vista pueda "ver" las capas de datos y de negocios por lo que puedes implementar el binding de los componentes visuales al dataset que le proporcione la clase TFactura o bien ligarlos completamente a TQFactura y TQDetFactura ya que solo los están mostrando. De manera que cuando se quiera guardar, modificar o borrar lo visualizado, la vista utiliza a TFactura quien aplica las reglas de negocio y actua sobre la capa de datos.

Otro enfoque más es adicionar una capa o bien dentro de la capa de negocios, colocar ClientDataSets para que las vistas hagan binding sobre ellos y así no tengan acceso directo a la capa de datos.

En conclusión, no es necesario hacer una coincidencia entre los objetos de la capa de negocios con la de datos, el patrón solo pide que la capa de datos no sea manoseada más que por la de negocios y además esta capa de datos no puede "ver" a las demás, su unico trabajo es acceder a los datos.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita