| Patrón | Cuándo usarlo | Consigue | Ejemplo |
| Adapter | -Se quiere usar una clase existente y su interfaz no concuerda con la que se necesita.
-Deba realizar una traducción entre interfaces de varios objetos. -Se quiere crear una clase reutilizable que coopere con clases no relacionadas o que no han sido previstas -Es necesario usar varias subclases existentes, pero no resulta práctico adaptar su interfaz |
-El cliente es independiente de las clases finales que utiliza.
-La clase adaptadora puede redefinir y ampliar la interfaz de la clase adaptada. |
|
| Composite | -Tenga que representar un componente modelado como unaestructura rama-hoja (o parte-todo o contenedor-contenido).
-La estructura pueda tener cualquier nivel de complejidad y sea dinámica. – Quiera tratar de forma uniforme toda la estructura delcomponente, utilizando operaciones comunes para toda la jerarquía. -Desee que los clientes sean capaces de obviar las diferencias entre objetos compuestos e individuales. |
-Se crea una jerarquía de objetos básicos y de composiciones de estos de forma recursiva.
-Simplifica el cliente al tratar a todos los objetos de igual forma. – Facilita agregar nuevas clases de componentes insertándolas en la jerarquía de clases como hijas de Compuesto u Hoja -Puede generalizar el diseño, haciendo difícil restringir los componentes de un objeto compuesto. |
|
| Decorator | -Para añadir funcionalidad a una clase sin las restricciones que implica la utilización de la herencia.
-Cuando se quiera añadir funcionalidad a una clase de forma dinámica en tiempo de ejecución y que sea transparente a los usuarios. -Haya características que varíen , que deban ser aplicadas de forma dinámica y que se puedan combinar arbitrariamente sobre un componente. |
-Ofrece más flexibilidad que la herencia estática. Con los
decoradores se pueden añadir y eliminar responsabilidades en tiempo de ejecución. -Se consiguen componentes muy parecidos. -Se reduce el número de clases y el árbol de herencia de clases. Teniendo menos clases se simplifica el diseño y la implementación de los programas. -Un objeto decorador no es un objeto componente, por lo que se pierde la identidad del objeto. |
|
| Facade | -Tenga que reducir la dependencia entre clases: Facade ofrece un punto de acceso al resto de clases, si estas cambian o se sustituyen por otras, sólo hay que actualizar la clase Facade sin
que el cambio afecte a las aplicaciones cliente. -Se ofrece un acceso sencillo a subsistemas complejos proporcionando una interfaz más sencilla sin eliminar las opciones avanzadas. -Tenga que descomponer un sistema en capas, puede utilizar Facade para ofrecer una interfaz de acceso entre las mismas. -Reducir el acoplamiento entre los clientes y los subsistemas. |
-Oculta a los clientes parte de la complejidad de los subsistemas haciendo que el subsistema sea más fácil de usar.
-Disminuye el acoplamiento entre los subsistemas y el cliente. Un acoplamiento débil nos permite modificar los componentes del sistema sin que sus clientes se vean afectados. -Se facilita la estructuración en capas. – No impide que los clientes usen las clases del subsistema directamente en caso de necesitarlo. |
|
| Proxy | -Cuando necesite sustituir una referencia simple a un objeto por una referencia más elaborada:
–Proxy Remoto: Cuando el objeto está en un sistema remoto y necesite un representante local. –Proxy Virtual: Para retrasar la creación de objetos costosos hasta que sean necesarios. –Proxy de Protección: Para controlar los derechos de acceso a un objeto. –Proxy de Sincronización: Para gestionar accesos de múltiples clientes a un recurso. –Referencias Inteligentes: Para gestión y mantenimiento del acceso a un objeto real |
-El patrón Proxy introduce un nivel de indirección al acceder a un objeto.
-Puede mejorar la eficiencia al retrasar la instanciación de un objeto costoso hasta que sea necesario utilizarlo. -Aumenta la seguridad. -Los clientes se desentienden de la ubicación de los componentes accedidos. |
|
Patrones Estructurales: Escenarios de uso
Respuesta
-
[…] Tomado vía Un poco de java […]






Replica a Patrones de diseño, buenasPracticas++ | Al son del duende Cancelar la respuesta