Patrones de diseño behavioral Flashcards
Describe los patrones behaviorals
Son los patrones que nos indican como van a interactura los objetos entre si
Menciona los tipos de patrones behaviorals
- Chain of Responsability
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visistor
Describe el patron chain of responsability
Cuando queremos no saber quien es el que manda el mensaje ni quien lo recibe y que es, to sea transparente para el cliete, pareciera un linked list ya que vamos a mandar la peticion y el nodo actual solo tiene que saber quien es el siguiente en la cadena de mando, promueve decoplamiento, un ejemplo seria por ejemplo una estructura en una empresa donde se tiene a un Director, un VP y un CiEO, podemos mandar peticion al director pero si este no puede tomar la decision manda la peticion al siguiente sucesor que es el VP y si este no puede lo manda al CEO, como se puede ver cada entidad solo tiene nocion del objeto siguiente que es sucesor
Describe el command pattern
Decopla el cliente y encapsula el objeto por lo cual no saben ni uno ni el otro de que pasa, por ejemplo tenemos la interfaz runnable que implementa un run y la clase thread a la cual le pasamos encapsulado el comportamiento de run, solo encapsulamos un metodo, es decir el objeto solo tendra un metodo, tambien el estado va a estar contenido en el commando, por ejemplo tenemos una luz que prende y apaga, podemos mandar llamar presionar boton y cada que lo presionesmos se va a prender y a apagar, pero esto sera dentro del command y no en el cliente como generalmente se hace y esta mal, si se hace bien el command podemos hacer varias cosas que sean el mismo command en un foreach y pasarle el commando original, solo tendriamos que tener cuidado con el etado ya que si solo lo pasamos asi funcionaria como un solo estado, si esta apagado lo prende y si esta prendido lo apaha y si lo que queremos es que apague todas las luces de la casa tendriamos un estado inconsistente
Describe el Interpreter pattern
Representa una regla de manera gramatica entre objetos,Representa gramatica, es cuando queremos hacer un diccionario de gramatica, por ejemplo hacer expresiones que sean por ejemplo or o and o igual y podemos juntar los objetos y hacer este tipo de operaciones, es una clase por regla, se parece al command pero el command es un metodo por clase aqui es toda una regla por ejemplo and o or
Describe el patron iterator
Navegacion a traves del objeto sin exponer su estructura, por ejemplo como iteramos una lista es diferente a como iteramos un tree, es lo que nos da este patron, que nos decopla la implementacion de la abstraccion, por ejemplo si usamos for normal de tipo for(int i=0;i<list.size>
</list.size>
Describe Mediator pattern
Los objetos interactuan unos con otros sin referirse explicitamente,por ejemplo en el caso de las luces que se apagaran, en lugar de acceder directamente a la luz, podemos poner en medio un mediator que actuara como ruteador para que se apaguen o se prendan las luces, podemos mediar multiples comandos que son clases con un solo metodo y juntarlas en el mediator
Describe el patron memento
Externaliza el estado de un objeto para poder agregar funcionalidad de rollback, reestaura un objeto a su estado previo, por ejemplo Serializable podemos serializarlo y deserializarlo, el tke care son las propiedades de las que nos vamos a ocupar para tener rollback, nos sirve para guardar historial de cambios, por ejemplo cuando teniamos el checker o el modifica telefono y solo queriamos que se modificara 3 veces maximo, este patron hubiera servido, al igual que con el checker donde teniamos el estado anterior y el actual, la diferencia con command es que este e enfoca en historia y estado y el command es por request
Describe el patron observer
Cuando tenemos un subject que tiene que ser consumido por varios observers, es event driven
Describe el patron state
Cuando queremos representar estado en una aplicacion, aplica el open close principle, las clases estan cerradas para cambios pero el estado esta abierto para extension, por ejemplo tenemos un ventilador, el ventilador de inicio puede estar prendido o apagado, despues puede agregarse medio, bajo y fuerte y asi varios estados, esto lo podemos lograr con if else pero esto hace que sea dificil de leer, la otra manera es hacerlo con un patron state, es una maquina de estado y cada estado solo esta consiente de su siguiente estado y no de todos los demas estados, sirve para refactorizar if elses, la diferecncia con strategy es que este se enfoca en estado y strategy en algoritmos
Describe el patron estrategy
Se va a escoger en tiempo de ejecucion el algoritmo, por ejemplo el comparator su tipo de comparacion sera distinto por ejemplo por nombre o por edad, etc, eliminar if else, una diferencia con el state es que el state conoce el estado que sigue y en el strategy no se conoce el algoritmo que sigue
Describe el patron template
Define un algoritmo que va a ser sobre escrito por clases hijas, parcialmente, hacemos todos los metodos que seran parte de nuestro proceso como abstractas y pondremos un metodo final para que no se sobreescriba y en este definimos los pasos de nuestro proceso, es importante que el metodo sea final para que no se sobreescriba por ejemplo doCheckout, doReceipt(), doPay(), doDelivery() si dejamos que lo camibien seria por ejemplo doDelivery(), doReceipt etc podemos cambiar en un orden que no es semanticamente correcto
Describe el patron visitor
Separar un algoritmo de la estructura del objeto, añadir comportamiento a jerarquias enteras de clases, la jerarquia tambien puede referirse a por ejemplo tenemos un modelo de pagina que tiene parrafos y renglones etc y queremos agregarle a todos estos una funcionalidad de print