[C con Clase] [OT] Patrones de Diseño - Persistencia de Objetos

Pablo Viva pablo.martin.viva en gmail.com
Vie Jun 8 20:54:23 CEST 2007


Te recomiendo que veas algunos documentos de Martin Fowler sobre los
patrones DAO y DataMapper.

Basicamente el Patron DAO significa DataAccessObject es decir por cada clase
de tu modelo vas a tener una clase Mapper que mapea ese objeto con la base
de datos y viceversa, se encarga de tener metodos miembro que reciban un
objeto de tu modelo y lo inserten en la base de datos, que lo updateen o lo
borren asi como para hacer consultas a tus necesidades.

Es mas si tenes una jerarquia completa de clases de negocio podes tener una
clase base o abastracta con metodos virtuales que definan la interfaz
insertar, updatear, remover, listar, y con metodos virtuales tambien para
devolver las consultas SQL a ejecutar, asi luego cada clase derivada y
especializada pueda usarse de DAO de forma tal que solo devuelva la consulta
SQL correcta. Estos objetos diseñarian dando uso del patron template.

Tambien podemos mezclar el patron DAO con el patron AbstractFactory para
abstraer al cliente no solo de las consultas SQL sino tambien de la
persistencia que estamos usando.

Yo puedo tener una jerarquia de modelo con clases de modelo, puedo tener
interfaces DAO que definan un uso comun de una clase DAO y puedo tener
implementaciones DAO de esas interfaces para usar con SQL, con XML, o con
algun otro metodo de persistencia, luego definiria una interfaz DAOFactory
que tenga metodos virtuales de creacion de DAO y para cada tipo de DAO o
implementacion de DAO (Ya sea SQL, XML, o de otro tipo) tener un DAOFactory
concreto.

Con esto no solo abstraemos al cliente del acceso alos datos sino de la
forma en que estos datos estan representados pudiendose cambiar muy
facilimente con simplemetne recompilar (En caso de lenguajes compilados como
C++) o via reflection en lenguajes interpretados que soportan reflection
como son .NET Framework y Java.

Saludos
Pablo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070608/d8380d10/attachment.html>


Más información sobre la lista de distribución Cconclase