Apuntes DAM
PATPatrones de diseño5 patrones10 ejercicios

Patrones de diseño estructurales

Los patrones estructurales tratan de cómo encajan las piezas: una clase que no tiene la interfaz que necesitas, un objeto al que quieres añadir funciones sin crear una subclase por cada combinación, un subsistema con veinte clases que el resto del programa no debería conocer.

Casi todos se basan en la misma idea: envolver un objeto en otro que tiene la interfaz que hace falta (Adapter), que añade algo antes o después (Decorator, Proxy), que simplifica (Facade) o que trata igual a uno que a un grupo (Composite). Composición en vez de herencia.

Código en Java, Python, JavaScript, C# y PHP.

Los patrones

Cuál elegir

PatrónResuelveLo verás en
AdapterUsar una clase cuya interfaz no es la que esperasArrays.asList(), InputStreamReader, adaptadores de RecyclerView
DecoratorAñadir funciones a un objeto sin subclases por cada combinaciónBufferedReader(new FileReader()), middlewares
FacadeDar una puerta sencilla a un subsistema complicadoUna clase servicio que esconde DAO, correo y pagos
CompositeTratar igual a un objeto y a un grupo de objetosCarpetas y ficheros, el DOM, menús con submenús
ProxyControlar el acceso a otro objeto: perezoso, caché, permisosEntidades perezosas de Hibernate, Spring @Transactional