Patrón Factory y otro enfoque de las 3 capas
Y aquí tenéis un artículo donde explica en español (no sé si bien o mal, espero feedback) el patrón Factory y ejemplificado sobre C#. Ha surgido este patrón en el diseño de controles personalizados para las clases de negocio, ya que no podemos incluir en las clases un ToControl() que nos devuelva este control ya referenciado a ese objeto, puesto que así el negocio dependería del interfaz. Podría hacerse pasando una fábrica de controles al negocio (con un método que para un objeto, cree un control del tipo adecuado y lo referencie a ese objeto). Todo esto relacionado con la posibilidad de definir listas heterogéneas usando FlowLayout, iremos profundizando en esto.
Otro enfoque a la arquitectura en 3 capas, aunque poco rigurosa, y basada en procedimientos almacenados, en este curso de Universidad .NET (hacen falta altavoces). No lo recomiendo a no ser que estéis muy aburridos, el profe es un poco cansino (como en todos los webcast, supongo), y ya digo que no es muy riguroso con la separación en capas, parece que su principal preocupación está en el rendimiento (curioso ver cómo carga de una sola tacada un dataset con el registro a modificar y 2 tablas más con los datos para rellenar los combos con los que modificar 2 campos particulares de esa tabla) por lo que no se ruboriza en pasar los dataset hacia fuera.
Aunque no termina de solucionarlo, uno de los problemas que plantea lo tenemos aún pendiente en nuestro diseño: ¿cómo compartir la conexión a la base de datos entre los objetos de la forma más transparente posible? Un primer enfoque consiste en (tal como hace el profe) usar una propiedad de la clase base de la jerarquía de objetos de negocio (a la que nosotros llamaremos EBase). Asignando esta propiedad una vez, los objetos que necesiten acceder a la base de datos podrán accederla directamente ya que todos heredan de esa clase. Quizá nos conformemos con este enfoque, a pesar de tener muchas lagunas, para nuestro Proyecto Sota actual, que sólo trabajará con una sola base de datos.
