Propósitos
Permite que clases con interfaces distintas trabajen juntas para crear un objeto común mediante en el cual se puedan comunicar e interactuar.
Envolver una clase existente con una nueva interfaz.
Unir un antiguo componente a un nuevo sistema.
Problema
Cuando un componente externo ofrece una funcionalidad que deseemos reutilizar, pero su “percepción del mundo” no es compatible con la filosofía y arquitectura del sistema que se ha iniciado a desarrollar.
Se usa cuando
Una clase utilizada no cumple con los requerimientos de una interfaz.
Condiciones complejas atan el comportamiento del objeto a su estado.
Las transiciones entre los estados de los objetos necesitan ser explícitas.
Ejemplos en el JDK
java.util.Arrays#asList()
java.io.InputStreamReader(InputStream)
java.io.OutputStreamWriter(OutputStream)
javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
y #unmarshal()
No hay comentarios:
Publicar un comentario