Patrones de arquitectura
Cuando una aplicación crece, el problema ya no es una clase sino cómo se reparten cientos: dónde va el SQL, dónde la lógica de negocio, dónde lo que se pinta en pantalla. Los patrones de arquitectura dan esa organización, y son los que piden los proyectos de 2º de DAM y DAW.
MVC separa los datos, la vista y quien los conecta; DAO y Repository aíslan el acceso a la base de datos; la inyección de dependencias hace que cada clase reciba lo que necesita en vez de crearlo, para poder cambiarlo y probarlo. Spring, Laravel, ASP.NET y Android están construidos sobre ellos.
Código en Java, Python, JavaScript, C# y PHP.
Los patrones
MVC (Modelo-Vista-Controlador)
Separa una aplicación en el modelo (los datos y sus reglas), la vista (lo que se pinta) y el controlador (recibe lo que pide el usuario y los conecta). Es la base de Spring MVC, Laravel y ASP.NET.nivel intermedio2 ejerciciosDAO (Data Access Object)
Una interfaz con las operaciones de guardar, buscar, actualizar y borrar de una entidad, y una clase que las implementa con JDBC, PDO o un fichero: el SQL queda en un solo sitio.nivel intermedio2 ejerciciosRepository
Una interfaz que se usa como una colección de objetos del dominio (guardar, buscar, consultas del negocio) y esconde dónde y cómo se guardan. Es lo que dan Spring Data, Room o Entity Framework.nivel intermedio2 ejerciciosInyección de dependencias
Una clase recibe los objetos que necesita por el constructor en vez de crearlos con new, y así se pueden cambiar por otros (dobles en las pruebas). Spring, Hilt y ASP.NET Core lo hacen solos.nivel intermedio2 ejercicios
Cuál elegir
| Patrón | Resuelve | Lo verás en |
|---|---|---|
| MVC (Modelo-Vista-Controlador) | Separar datos, presentación y control | Spring MVC, Laravel, ASP.NET MVC, JavaFX |
| DAO (Data Access Object) | Aislar el SQL del resto de la aplicación | Proyectos con JDBC, PDO o ADO.NET |
| Repository | Tratar la base de datos como una colección de objetos del dominio | Spring Data, Room, Entity Framework |
| Inyección de dependencias | Que una clase reciba sus dependencias en vez de crearlas | Spring, Hilt, ASP.NET Core, Laravel |