xmanuel wrote:
....
Claro que si no veo interés me callo y ya está
Nooo, no te escapes!
La idea es muy buena! Alguna vez se habló de este tema, Rafa Carmona arrancó con algo y se debatió bastante al respecto. Su nombre consensuado fué HDO (Harbour Data Objects), pero quedó aparcado (falta de tiempo, interés, lo de siempre...).
Actualmente estoy usando mi propio código para acceder a MySQL, trasladando algunas ideas copiadas de los frameworks de PHP que he estado usando y tienen un diseño más o menos parecido, pensando siempre en la misma arquitectura:
TConnection (la unica clase que se instancia directamente en la aplicacion)
-->TQuery -- Resultado no editable de las consultas
-->TModel -- ORM (Object Relational Mapper) , crea instancias editables. Hace instrospección de los datos para crear los objetos con sus variables.
--->TRecord Las filas provistas por TModel (Active Record)
El único objeto que el programador instancia es TConnection, TQuery y TModel son creadas por TConnection (Un patrón Factory), con lo que se logra bajar el nivel de acoplamiento, el único punto fijo es la Connection en sí.
Actualmente en proceso: Tambien puedes ponerle mas inteligencia 'alimentando' el esquema con las relaciones, tipo oModelFacturas:HasMany('FacturaItems', 'Items), de forma tal que, por ejemplo, dado un objeto del tipo factura sea capaz de traer todos sus lineas con oFactura:Items, sin necesidad de escribir código extra. Tambien 'aprende' de la recíproca: Dado un item de factura oLinea, oLinea:Factura me devuelve el objeto Factura padre.
Esa estructura sencilla se puede escribir para los diferentes orígenes de datos, puede ser independiente del SSOO (me interesa que se pueda usar en Linux para proveer servicios) y de la interfaz gráfica, y con solo cambiar la conexión en el programa, ya tendrías una aplicacion 'multibase'.
Tal vez si desarrollaras el concepto de tu propuesta, mostrar un pelín más de como llevarías la funcionalidad adelante, podríamos generar algunas ideas.
Y como dice Lucas, para los que prefieren el modelo RDD ya existe ADORDD, por lo que esto lo enfocaría desde una perspectiva totalmente diferente.