PATRONES DE DISEÑO EMERGENTES
1.- MVC
Es un patrón de diseño que se utiliza comúnmente en el desarrollo de software para organizar y estructurar el código de manera más eficiente. Este patrón ayuda a separa en tres componentes principales: Modelo, Vista y Controlador.
- MODELO: Se encarga de manejar la manipulación de datos, la lógica de negocio y cualquier otra tarea relacionada con la gestión de información.
- VISTA: La Vista es responsable de la presentación de la información al usuario y de la interfaz de usuario.
- CONTROLADOR: Gestiona las interacciones del usuario, interpreta las acciones del usuario y traduce estas acciones en operaciones en el Modelo o en la Vista.
- Separación de preocupaciones: Organiza el código en componentes para una fácil gestión.
- Reutilización de código: Permite la reutilización de componentes en diferentes partes de la aplicación.
- Facilita el desarrollo concurrente: Diferentes equipos pueden trabajar simultáneamente en modelos, vistas y controladores.4.- Definición de Modelo, Vista y Controlador.
- Facilita la prueba: Permite pruebas unitarias independientes para cada componente.
- Adaptabilidad a cambios: Facilita la realización de cambios sin afectar otras partes del sistema.
DESVENTAJAS
- Complejidad inicial: Puede aumentar la complejidad, especialmente en proyectos pequeños.
- Posible sobrecarga: Puede haber una mayor cantidad de archivos y clases.
- Aumento en la cantidad de archivos: Mayor complejidad de gestión de archivos.
- Aprendizaje inicial: Requiere tiempo para que los desarrolladores nuevos comprendan completamente el patrón.
- Posible sobreingeniería: Puede ser excesivo para proyectos pequeños o simples.
CARACTERÍSTICAS MVC
Separación de Responsabilidades:
- MVC separa la aplicación en tres componentes distintos, cada uno con una responsabilidad clara.
Reutilización de Código:
- Debido a la clara separación de responsabilidades, los componentes pueden ser reutilizados en diferentes partes de la aplicación o incluso en diferentes aplicaciones.
Escalabilidad:
- La separación de responsabilidades facilita la escalabilidad del sistema
APLICACIÓNES DE MVC
- Algunos ejemplos incluyen frameworks de desarrollo web como Ruby on Rails, Django (para Python) o Laravel con PHP (Desarrollo Back-end). Este enfoque facilita la separación de la lógica de negocio, la presentación y la gestión de eventos, lo que mejora la mantenibilidad y la escalabilidad del software.
- Mientras que el Front End hace uso de lenguajes como HTML y CSS para construir las vistas.
- Para el modelo se hace uso de bases de datos SQL.
2.- DAO
Patrón Data Access object (DAO), consiste en utilizar un objeto de acceso a datos para abstraer y encapsular todos los accesos a la fuente de datos. El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos.
Ilustración 2: DAO
- Los Objetos de Acceso a Datos son un Patrón de los subordinados de Diseño Core J2EE y resultó una buena práctica. La ventaja de usar objetos de acceso a datos es que cualquier objeto de negocio (aquel que contiene detalles específicos de operación o aplicación) no requiere conocimiento directo del destino final de la información que manipula.
- Los Objetos de Acceso a Datos pueden usar en Java para aislar a una aplicación de la tecnología de persistencia Java subyacente (API de Persistencia Java), la cual podría ser JDBC, JDO, Enterprise JavaBeans, TopLink, Hibernate, iBATIS, o cualquier otra tecnología de persistencia. Usando Objetos de Acceso de Datos significa que la tecnología subyacente puede ser actualizada o cambiada sin cambiar otras partes de la aplicación.
- La flexibilidad tiene un precio. Cuando se añaden DAOs a una aplicación, la complejidad adicional de usar otra capa de persistencia incrementa la cantidad de código ejecutado durante el tiempo de ejecución. La configuración de las capas de persistencia requiere en la mayoría de los casos mucho trabajo.
- Las aplicaciones críticas con el rendimiento no deberían usar DAOs.
- Independencia de la tecnología de almacenamiento de datos: El patrón DAO encapsula la lógica de acceso a datos, lo que permite que la lógica de negocio se mantenga independiente de la tecnología de almacenamiento de datos utilizada. Esto facilita el cambio de la tecnología de almacenamiento de datos sin tener que modificar la lógica de negocio.
- Abstracción de los datos: El patrón DAO abstrae los datos de la base de datos, lo que facilita el acceso a los datos. Esto se logra mediante el uso de interfaces o clases abstractas para representar los datos.
- Facilidad de mantenimiento: El patrón DAO facilita el mantenimiento del código, ya que la lógica de acceso a datos se encuentra en un lugar centralizado. Esto facilita la localización y corrección de errores.
3.- CQRS
El patrón de diseño CQRS (Command Query Responsibility Segregation) es un patrón de arquitectura de software que separa las operaciones de lectura y actualización de un almacén de datos.
CARASTERÍSTICAS
- Modelos de datos separados: El patrón CQRS separa las operaciones de lectura y actualización en dos modelos de datos diferentes. El modelo de comandos se utiliza para realizar operaciones de actualización, mientras que el modelo de consultas se utiliza para realizar operaciones de lectura.
- Independencia de los modelos de datos: Los modelos de datos de lectura y actualización pueden diseñarse y optimizarse de forma independiente.
- Flexibilidad: El patrón CQRS puede ayudar a mejorar la flexibilidad de las aplicaciones, ya que permite que las operaciones de lectura y actualización se implementen de forma independiente.
VENTAJAS
- Mejor rendimiento: El patrón CQRS puede mejorar el rendimiento de las aplicaciones al separar las operaciones de lectura y actualización. Esto se debe a que el modelo de consultas puede optimizarse para la lectura, mientras que el modelo de comandos puede optimizarse para la actualización.
- Mayor escalabilidad: El patrón CQRS puede ayudar a mejorar la escalabilidad de las aplicaciones al separar las operaciones de lectura y actualización. Esto se debe a que las operaciones de lectura y actualización pueden escalarse de forma independiente.
- Mayor flexibilidad: El patrón CQRS puede ayudar a mejorar la flexibilidad de las aplicaciones al separar las operaciones de lectura y actualización. Esto se debe a que los modelos de datos de lectura y actualización pueden diseñarse de forma independiente.
DESVENTAJAS
- La complejidad: El patrón CQRS puede aumentar la complejidad de las aplicaciones.
- La coherencia: Es importante mantener la coherencia entre los modelos de datos de lectura y actualización.
- La escalabilidad: Los modelos de datos de lectura y actualización pueden necesitar escalarse de forma independiente.
4.- DDD
El patrón de diseño DDD (Domain-Driven Design) es un enfoque para el desarrollo de software que se centra en el dominio de la aplicación. El dominio es el conjunto de conceptos, reglas y relaciones que definen el problema que la aplicación está tratando de resolver.
PRINCIPALES CARACTERÍSTICAS SON:
- Modelo de dominio: El modelo de dominio es una representación del dominio de la aplicación. Este modelo debe ser lo suficientemente completo para capturar todos los conceptos, reglas y relaciones del dominio.
- Linguaje de dominio: El lenguaje de dominio es un vocabulario específico del dominio que se utiliza para comunicar las ideas del dominio. Este lenguaje debe ser claro, conciso y fácil de entender por los usuarios del dominio.
- Ingeniería de dominio: La ingeniería de dominio es el proceso de diseñar y construir el modelo de dominio. Este proceso debe ser iterativo y colaborativo, y debe involucrar a los usuarios del dominio.
VENTAJAS
- Mejor comprensión del dominio: El patrón DDD ayuda a los desarrolladores a comprender mejor el dominio de la aplicación. Esto puede conducir a aplicaciones más precisas y eficientes.
- Mejor comunicación con los usuarios del dominio: El patrón DDD proporciona un lenguaje común para la comunicación con los usuarios del dominio. Esto puede mejorar la comprensión y el compromiso de los usuarios del dominio.
- Mayor flexibilidad y escalabilidad: El patrón DDD puede ayudar a las aplicaciones a ser más flexibles y escalables. Esto se debe a que el modelo de dominio es independiente de la interfaz de usuario y la infraestructura.
DESVENTAJAS
- La complejidad: El patrón DDD puede aumentar la complejidad de las aplicaciones.
- El tiempo y el esfuerzo: El patrón DDD puede requerir más tiempo y esfuerzo para implementarlo que otros enfoques de desarrollo de software.
5.- MVVM
El patrón de diseño MVVM (Model-View-ViewModel) es un patrón de arquitectura de software que separa la lógica de la aplicación en tres capas:
- Modelo: El modelo representa los datos de la aplicación.
- Vista: La vista representa la interfaz de usuario de la aplicación.
- ViewModel: El ViewModel es un intermediario entre el modelo y la vista.
CARACTERÍSTICAS
- Separación de la lógica: El patrón MVVM separa la lógica de la aplicación en tres capas, lo que facilita el mantenimiento y la prueba de la aplicación.
- Vistas reutilizables: Las vistas son independientes del modelo y del ViewModel, lo que facilita la reutilización de las vistas en diferentes aplicaciones.
- Testabilidad: El patrón MVVM facilita la creación de pruebas unitarias para la aplicación.
VENTAJAS
- Mejor mantenibilidad: El patrón MVVM facilita el mantenimiento de la aplicación, ya que la lógica de la aplicación está bien organizada.
- Mejor reutilización: El patrón MVVM facilita la reutilización de las vistas y los ViewModels.
- Mejor testabilidad: El patrón MVVM facilita la creación de pruebas unitarias para la aplicación.
DESVENTAJAS
- La complejidad: El patrón MVVM puede aumentar la complejidad de las aplicaciones.
- La curva de aprendizaje: El patrón MVVM puede tener una curva de aprendizaje pronunciada.
6.- MVP
El patrón de diseño MVP (Model-View-Presenter) es un patrón de arquitectura de software que separa la lógica de la aplicación en tres capas:
- Modelo: El modelo representa los datos de la aplicación.
- Vista: La vista representa la interfaz de usuario de la aplicación.
- Presentador: El presentador es un intermediario entre la vista y el modelo.
CARACTERÍSTICAS
- Separación de la lógica: El patrón MVP separa la lógica de la aplicación en tres capas, lo que facilita el mantenimiento y la prueba de la aplicación.
- Vistas reutilizables: Las vistas son independientes del modelo y del presentador, lo que facilita la reutilización de las vistas en diferentes aplicaciones.
- Testabilidad: El patrón MVP facilita la creación de pruebas unitarias para la aplicación.
VENTAJAS
- Mejor mantenibilidad: El patrón MVP facilita el mantenimiento de la aplicación, ya que la lógica de la aplicación está bien organizada.
- Mejor reutilización: El patrón MVP facilita la reutilización de las vistas y los presentadores.
- Mejor testabilidad: El patrón MVP facilita la creación de pruebas unitarias para la aplicación.
DESVENTAJAS
- La complejidad: El patrón MVP puede aumentar la complejidad de las aplicaciones.
- La curva de aprendizaje: El patrón MVP puede tener una curva de aprendizaje pronunciada.
REFERENCIAS
Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.
Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.
Gossman, J. (2009). Programming WPF with MVVM. Apress.
Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.






Comentarios
Publicar un comentario