¿Qué patrones de diseño usas realmente en proyectos Java/Spring, y dónde?
Respuesta
- Singleton: los beans de Spring son singletons por defecto (los gestiona el contenedor).
- Factory / Abstract Factory:
BeanFactory, Calendar.getInstance(), List.of(...). - Builder:
StringBuilder, builders de Stream, @Builder de Lombok, HttpRequest.newBuilder(). - Strategy:
Comparator, inyectar distintas implementaciones de una interface. - Decorator: streams de I/O de Java (
BufferedReader), envolver servicios. - Proxy:
@Transactional, @Cacheable, lazy loading en Hibernate. - Observer: eventos (
ApplicationEventPublisher), listeners. - Template Method:
JdbcTemplate, RestTemplate. - Chain of Responsibility: filter chains de servlets y de seguridad.
- Di cuándo NO usar un patrón: no añadas uno sin un problema real (YAGNI).
Practica esta pregunta en Repaso