En estos últimos tiempos he estado digiriendo patrones de diseño, los clásicos (Observador, Adaptador, Fachada, Singleton y así por el estilo). Y he dado el "salto" para MVC, MVP y algunos derivados (estudio a fondo, ya estaba familiarizado con los términos).
Todas las implementaciones de dichos patrones, sin importar el lenguaje, pero concretamente en Delphi prácticamente renuncian al uso de los componentes DB Aware (de plano en la Web no existen) así como del TDataSet; se trata de imitar la manera del Data Binding de .NET o por lo menos es mi apreciación.Entonces yo me pregunto, ¿Debo de renunciar al RAD de Delphi?, teniendo en cuenta que es lo más poderoso que posee nuestra herramienta. También ¿Debo de renunciar al poder que me dan los TDataSet? el cual me evita un monto de código.
Alejándome un poco de esas interrogantes, me surge una duda conceptual, para tratar de llegar a construir algo parecido al MVP (o por lo menos se parezca al Passive View aunque sea de manera remota) tengo el siguiente escenario y claro es mi apreciación:
- M = Base de Datos
- V = Formularios (TForm)
- P = Data Modulo (TDataModule)
Ahora bien, los Formularios tienen una propiedad tipo TDataModule para poder invocar los métodos necesarios (Insertar, Editar, Borrar...). Con esta modalidad ¿Estaría rompiendo el modelo MVP? ¿Estaría violando las leyes de Demeter?
Analizando dichas interrogantes y siendo afirmativas las respuestas, me dije, lo ideal seria implementar el patrón Fachada y así podre solventar dichas situaciones. Con esto ya el Formulario no conocería al TDataModule sino a la clase TFachadataModule, por ende, la propiedad (del formulario) pasaría de TDataModule a TFachadaModule.
Pero me surge (siempre un pero) otra interrogante, cuando tenga la necesidad de crearme un método especifico para un DataModule por ejemplo, para el DataModule de Empleados para manejar su salario; ¿Tendría que implementar dicho método en el DataModule y luego hacer una herencia de TFachadaModule a su vez hacer un wrapper de ese método y poner en uso esa nueva unidad en el formulario del empleado?En verdad ando algo en liado con estos conceptos

En realidad ando buscando acercarme lo más posible a MVP, pero sin renunciar al RAD de Delphi.
Espero que se pueda entender algo...
P.D. No se que le pasa a mi Chrome que hace que se vea así
