Patrones estructurales Flashcards
(10 cards)
Adapter - ¿Qué problema resuelve el patron Adapter?
Cuando se esta usando un objeto que tiene cierta funcionalidad que el cliente necesita pero el código del cliente no puede usar el objeto porque el objeto esperado tiene otra interface.
Es conocido como Wrapper
Adapter - ¿Cómo se implementa?
Se debe crear una interface con los metodos que va a usar el cliente, posteriormente hay dos formas de implementar adapter. La primera es extender la clase original e implementar la interface, entonces se sobreescriben los metodos y dentro de cada metodo se llama al de la clase original.
La otra implementación es solo implementar la interface y crear un atributor de la clase original, se crea una instancia nueva de esa clase y entonces se va a llamar este desde cada metodo.
Adapter - Ejemplos de la vida real
java.io.InputStreamReader/java.io.OutputStreamWriter - usan el patron Adapter, adaptan de InputStream/OutputStream a objetos de la interface Reader/Writer
Bridge - ¿Qué problema resuelve el patron Bridge?
Cuando se tienen abstracciones que están generalmente acompladas entre sí con herencia.
Bridge - ¿Cómo se implementa?
Se debe separar en una clase abstracta “Abstraction” la cual es la operacion completa. Luego, en una interface “Implementor” se crean los pasos que se separan de la función, en la implementación de esa interface se agrega el codigo. Finalmente, en “Abstraction” se tiene un atributo que es de tipo “Implementor” y allí se llaman las funciones creadas.
Bridge - Ejemplos de la vida real
java.sql.DriverManager y java.sql.Driver - Entre ellos utilizan Bridge. DriverManager es el Abstractor y Driver es el Implementor.
Decorator - ¿Qué problema resuelve el patron Decorator?
Cuando se quiere mejorar el comportamiento de un objeto existente de forma dinamica (En tiempo de ejecución).
Decorator - ¿Cómo se implementa?
En primer lugar, debe haber herencia. Si no hay herencia, se debe crear una interface que tenga los metodos basicos de la clase. Luego se crea una clase Decorator que implementa la interface y tiene una referencia de la otra clase (la clase normal). Dentro del decorator se colocan las funciones extra que se quieran agregar.
Decorator - Ejemplos de la vida real
java.io.BufferedOutputStream - Decora cualquier objeto java.io.OutputStream y agrega buffering a la operación de escritura del archivo.
Composite - ¿Qué problema resuelve el patron Composite?
Cuando se quiere tratar objetos que estan formados en una estructura de arbol de forma similar.