Documente Academic
Documente Profesional
Documente Cultură
Patrón Flyweight
■ Solución
Ejemplo
IVehiculo
Ejemplo
Auto
Ejemplo
FlyweightFactory
Ejemplo
Main
Ejemplo
■ Salida
Aplicabilidad
Se debe aplicar este patrón cuando se cumplen todas estas
características:
■ Se utiliza un gran número de objetos
■ El coste de almacenamiento es alto debido a la cantidad de objetos
■ La mayoría de los estados de los objetos pueden ser creados como
comunes.
■ Muchos objetos pueden ser reemplazados por unos pocos una vez
que han sido borrados los estados no comunes.
■ La mayor parte del estado del objeto puede ser extrínseco
Consecuencias
■ Reduce en gran cantidad el peso de los datos en un servidor.
■ Consume un poco más de tiempo para realizar las búsquedas.
■ Se complica la codificación lo que puede redundar en el
aumento en la aparición de errores.
■ El cliente debe tener algún conocimiento de la implementación.
Por esto, puede romper con la estructura cliente-servidor.
Referencias
Patrón Mediator
Patrones relacionados:
Observer (Observador): Mediante este patrón los objetos pueden comunicarse con el
Mediador.
Estructura
Participantes
■ Mediador: Define una interfaz para comunicarse con los otros objetos
Nuestro ejemplo será un chat: donde habrá usuarios que se comunicaran entre sí en
un salón de chat. Para ellos se define una interface llamada IUsuarioChat que todos los
objetos que quieran participar de un chat deberán implementar. La clase Usuario
representa un usuario que quiera chatear.
Ejemplo
Diagrama
Ejemplo
IUsuarioChat
ISalonDeChat
Ejemplo
Usuario
Ejemplo
SalonDeChat
Ejemplo
Mediator(Main)
Ejemplo
Resultado
Aplicabilidad
■ Dificultad para reutilizar objetos ya que nos referimos a varios objetos para
comunicarnos.
Patrón Memento
Intención: Guarda parte o todo el estado interno de un objeto, para que este objeto pueda ser
restaurado más tarde al estado guardado por Memento
Patrones relacionados:
Command (Comando): Puede usar Mementos para restaurar sus operaciones almacenadas.
Iterator (Iterador): Puede usarse con Iterador para buscar colecciones de estados específicos.
Estructura
Participantes
■ Memento: Almacena el estado de un objeto Originador. Memento
almacena todo o parte de Originador. Tiene dos interfaces, una para
Aplicación que le permite comunicarse con otros objetos y otra para
Originador que le permite almacenar el estado
Vamos a realizar un ejemplo de este patrón donde se busque salvar el nombre de una
persona que puede variar a lo largo del tiempo.
Ejemplo
Diagrama
Ejemplo
Memento
Ejemplo
Persona
Ejemplo
Conserje
Ejemplo
Main
Ejemplo
Resultado
Aplicabilidad
■ Todo o parte del objeto debe de ser almacenado para una posible
restauración del mismo.
■ Cuando una interfaz directa para obtener el estado de un objeto
exponga detallas de su implementación.
Colaboraciones
■ Mantiene la encapsulación
■ Simplifica la clase Creador ya que no debe preocuparse de
mantener las versiones del estado interno.
■ Podría incurrir en un considerable gasto de memoria: encapsular
y restaurar el estado no debe ser costoso.
■ Puede ser difícil en algunos lenguajes asegurar que sólo el
Creador tenga acceso al estado del Memento.
Referencias