iterador

Iterator es un patrón de diseño de comportamiento. Representa un objeto que permite el acceso secuencial a los elementos de un objeto agregado sin usar descripciones de cada uno de los objetos agregados.

iterador

Por ejemplo, elementos como un árbol, una lista vinculada, una tabla hash y una matriz se pueden recorrer (y modificar) mediante un objeto Iterator.

La iteración a través de los elementos la realiza el objeto iterador, no la colección en sí. Esto simplifica la interfaz y la implementación de la colección y promueve una separación más lógica de las preocupaciones.

Una característica de un iterador completamente implementado es que el código que usa el iterador puede no saber nada sobre el tipo de agregado iterado.

Este enfoque se utiliza muy a menudo. Por ejemplo, envía una consulta SQL a la base de datos y, en respuesta, le devuelve un iterador (en términos de SQL, generalmente se llama cursor). Y con la ayuda del iterador resultante, puede tomar filas de la respuesta SQL una por una.

dominio

Un comando es un patrón de diseño de comportamiento utilizado en la programación orientada a objetos que representa una acción. El objeto de comando contiene la acción en sí y sus parámetros.

Dominio

Para llamar a un método, generalmente necesita:

  • referencia de objeto
  • nombre del método (referencia del método)
  • valores de los parámetros del método
  • referencia al contexto que contiene los objetos utilizados

Todos estos datos deben empaquetarse en un objeto: Comando ( comando ).

Pero eso no es todo: después de todo, alguien debe ejecutar el comando. Entonces, este patrón incluye cuatro entidades más: comandos ( comando ), un receptor de comandos ( receptor ), un llamador de comandos ( invocador ) y un cliente ( cliente ).

Un objetodominiosabe sobre el receptor y llama al método del receptor. Los valores de los parámetros del receptor se almacenan en el comando. La persona que llama (invocador) sabe cómo ejecutar el comando y posiblemente realiza un seguimiento de los comandos ejecutados. La persona que llama (invocador) no sabe nada sobre un comando en particular, solo sabe sobre la interfaz.

Ambos objetos (el objeto de llamada y varios objetos de comando) pertenecen al objeto de cliente. El cliente decide qué comandos ejecutar y cuándo. Para ejecutar un comando, pasa el objeto de comando a la persona que llama (invocador).

El uso de objetos de comando facilita la creación de componentes compartidos que necesita delegar o realizar llamadas a métodos en cualquier momento sin tener que conocer los métodos de clase o los parámetros de métodos.

El uso del objeto llamador (invoker) le permite mantener un registro de los comandos ejecutados sin necesidad de que el cliente conozca este modelo de contabilidad (dicha contabilidad puede ser útil, por ejemplo, para implementar el comando deshacer y rehacer).

Por ejemplo, está escribiendo un programa que le permite realizar varias tareas en un horario. Por un lado, su programa realiza un seguimiento de las tareas y gestiona su lanzamiento, por otro lado, puede tener varios ejecutores, cada uno de los cuales puede ejecutar comandos de su propio tipo. Por ejemplo, envío de SMS, envío de cartas, envío de mensajes a Telegram, etc.

Observador

Observer es un patrón de diseño de comportamiento. Implementa un mecanismo de clase que permite que un objeto de esta clase reciba notificaciones sobre cambios en el estado de otros objetos y así observarlos.

Observador

Las clases a las que se suscriben otras clases se denominan Sujetos , y las clases suscritas se denominan Observadores .

Al implementar el patrón Observer, las siguientes clases se usan comúnmente:

  • Observable : una interfaz que define métodos para agregar, eliminar y notificar observadores;
  • Observador : la interfaz a través de la cual el observador recibe la notificación;
  • ConcreteObservable es una clase concreta que implementa la interfaz Observable ;
  • ConcreteObserver es una clase concreta que implementa la interfaz Observer .

El patrón Observer se utiliza cuando el sistema:

  • hay al menos un objeto que envía mensajes;
  • hay al menos un destinatario de mensajes, y su número y composición pueden cambiar mientras se ejecuta la aplicación;
  • evita el fuerte acoplamiento de las clases que interactúan.

Este patrón se usa a menudo en situaciones en las que el remitente de los mensajes no está interesado en lo que hacen los destinatarios con la información que se les proporciona.

Visitante

Visitor es un patrón de diseño de comportamiento que describe una operación que se realiza en objetos de otras clases. Cuando cambia de visitante, no hay necesidad de cambiar las clases de servicio.

La plantilla demuestra la técnica clásica para recuperar información de tipos perdidos sin recurrir al envío doble de downcast.

Visitante

Debe realizar algunas operaciones desconectadas en varios objetos, pero debe evitar contaminar su código. Y no hay forma ni deseo de consultar el tipo de cada nodo y lanzar el puntero al tipo correcto antes de realizar la operación deseada.

La plantilla debe usarse si:

  • hay varios objetos de diferentes clases con diferentes interfaces, pero sobre ellos se deben realizar operaciones que dependen de clases específicas;
  • en la estructura, es necesario realizar varias operaciones que complican la estructura;
  • a menudo se agregan nuevas operaciones en la estructura.

mediador

Mediator es un patrón de diseño de comportamiento que permite que múltiples objetos interactúen mientras mantiene un acoplamiento débil y evita la necesidad de que los objetos se refieran explícitamente entre sí.

Mediador

El patrón Mediator le permite garantizar la interacción de muchos objetos, mientras forma un acoplamiento flexible y elimina la necesidad de que los objetos se refieran explícitamente entre sí.

El mediador define una interfaz para intercambiar información con objetos.Colegas, Un mediador particular coordina las acciones de los objetosColegas.

Cada clase de colega conoce su objeto.Mediador, todos los colegas intercambian información solo con un intermediario, en su ausencia tendrían que intercambiar información directamente.

Colegasenviar solicitudes al Revendedor/span> y recibir solicitudes de este. El mediador implementa un comportamiento cooperativo enviando cada solicitud a uno o másColegas.