Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

En este último grupo se encuentran la mayoría de los patrones, y se usan para gestionar algoritmos, relaciones y responsabilidades entre objetos.

  • Command: Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.

Se debe usar cuando:

-Se necesiten colas o registros de mensajes.

-Se deba tener la posibilidad de deshacer las operaciones realizadas.

-Se necesite uniformidad al invocar las acciones.

-Se quiera facilitar la parametrización de las acciones a realizar.

-Se quiera independizar el momento de petición del de ejecución.

-El parámetro de una orden puede ser otra orden a ejecutar.

-Se busque desarrollar sistemas utilizando órdenes de alto nivel que se construyen con operaciones sencillas (primitivas).

-Se necesite sencillez al extender el sistema con nuevas acciones.

  • Chain of responsibility: se evita acoplar al emisor y receptor de una petición dando la posibilidad a varios receptores de consumirlo. Cada receptor tiene la opción de consumir esa petición o pasárselo al siguiente dentro de la cadena.

Se utiliza cuando:

-Las peticiones emitidas por un objeto deben ser atendidas por distintos objetos receptores.

-No se sabe a priori cual es el objeto que me puede resolver el problema.

-Cuando un pedido debe ser manejado por varios objetos.

-El conjunto de objetos que pueden tratar una petición debería ser especificado dinámicamente.

Se utiliza cuando:

-Las peticiones emitidas por un objeto deben ser atendidas por distintos objetos receptores.

-No se sabe a priori cual es el objeto que me puede resolver el problema.

-Cuando un pedido debe ser manejado por varios objetos.

-El conjunto de objetos que pueden tratar una petición debería ser especificado dinámicamente.

 

  • Interpreter: Define una representación para una gramática así como el mecanismo para evaluarla. El árbol de sintaxis del lenguaje se suele modelar mediante el patrón Composite.

Se utiliza cuando:

-Cuando hay un lenguaje que interpretar y se puede interpretar sus palabras como árboles sintácticos abstractos. Para ello, la gramática debe ser simple

  • Iterator: Se utiliza para poder movernos por los elementos de un conjunto de forma secuencial sin necesidad de exponer su implementación específica.

Se utiliza cuando:

-Una clase necesita acceder al contenido de una colección sin llegar a ser dependiente de la clase que es utilizada para implementar la colección, es decir sin tener que exponer su representación interna.

-Una clase necesita un modo uniforme de acceder al contenido de varias colecciones.

-Cuando se necesita soportar múltiples recorridos de una colección.

  • Mediator: Objeto que encapsula cómo otro conjunto de objetos interactúan y se comunican entre sí.

Se utiliza cuando:

-Un conjunto grande de objetos se comunica de una forma bien definida, pero compleja.

-Reutilizar un objeto se hace difícil por que se relaciona con muchos objetos.

-Las clases son difíciles de reutilizar porque su función básica esta entrelazada con relaciones de dependencia.

  • Memento: Este patrón otorga la capacidad de restaurar un objeto a un estado anterior

Se usa cuando:

-Se necesite restaurar el sistema desde estados pasados.

-Se quiera facilitar el hacer y deshacer de determinadas operaciones, para lo que habrá que guardar los estados anteriores de los objetos sobre los que se opere (o bien recordar los cambios de forma incremental).

  • Observer: Los objetos son capaces de suscribirse a una serie de eventos que otro objetivo va a emitir, y serán avisados cuando esto ocurra.

Se usa cuando:

-Un objeto necesita notificar a otros objetos cuando cambia su estado. La idea es encapsular estos aspectos en objetos diferentes permite variarlos y reutilizarlos independientemente.

-Cuando existe una relación de dependencia de uno a muchos que puede requerir que un objeto notifique a múltiples objetos que dependen de él cuando cambia su estado.

  • State: Permite modificar la forma en que un objeto se comporta en tiempo de ejecución, basándose en su estado interno.

Se usa cuando:   

-El comportamiento de un objeto depende de un estado, y debe cambiar en tiempo de ejecución según el comportamiento del estado.

-Cuando las operaciones tienen largas sentencias con múltiples ramas que depende del estado del objeto.

  • Strategy: Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.
  • Template Method: Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.
  • Visitor: Permite separar el algoritmo de la estructura de datos que se utilizará para ejecutarlo. De esta forma se pueden añadir nuevas operaciones a estas estructuras sin necesidad de modificarlas.

3 - Patrones de comportamiento

Miguel Angel Nolasco Cruz
Module by Miguel Angel Nolasco Cruz, updated more than 1 year ago
No tags specified