• Saltar a la navegación principal
  • Saltar al contenido principal

CARLOSZR.COM

Mi blog personal, CarlosZR

  • Blog
  • Contacto
  • Curso de SwiftUI por CarlosZR

iOS Developer Carlos ZR / 01/03/2023

Chain of responsibility en Swift

Chain of responsibility en Swift es un patrón de diseño de comportamiento. Este patrón de comportamiento nos evita acoplar el emisor de una petición a su receptor, ya que da la posibilidad de responder a esa petición a más de un objeto. Varias clases van a poder responder a una solicitud indepependientemente de cualquier otro objeto a lo largo de la cadena. Cuando se ha manejado la solicitud se completa el ciclo a lo largo de la cadena.

Un buen uso es cuando no sabemos qué objeto es el que va a poder responder a la solicitud. Si un objeto no sabe si va a poder responder a la solicitud, se la pasa al siguiente objeto en la cadena.

Ejemplo de Chain of Responsibility

Vamos a ver un ejemplo de Chain of responsibility en Swift. Supongamos que en una empresa de transporte en función del número de km que requiera el transporte se va a seleccionar un medio de transporte u otro. Tenemos un handler que va a ser el director de transporte, que va a solicitar a una cadena de medios de transportes (hay tres medios de transporte: camión, tren o avión) que dica a cada medio de la cadena de transporte si le toca trabajar en función del número de km que requiera el cliente.

El director de transporte va a ser la interfaz que va a manejar las peticiones. Primero creamos esta interfaz:

interfaz de chain of responsibility
Interfaz del handler de Chains of Responsibility

Ahora creamos cada uno de los tres handler que van a intentar gestionar el transporte.

handler para el camión
Handler camión
handler para el tren
Handler para el tren
handler para el avión
Handler para el avión

Ahora creamos el director de transporte que va a ser el encargado de lanzar la solicitud a la cadena de medios de transporte.

director de la cadena de transporte
Director de la cadena de transporte; lanza la petición

Para probar que el patrón de diseño chain of responsibility está implementado correctamente lo probamos en el controlador principal de nuestra aplicación.

App de ejemplo de chain of resonsibility en Swift
View controller de la app

Publicado en: iOS Developer Carlos ZR

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Carlos ZR

  • Sígueme en Twitter
  • Política de Cookies
  • Política de Privacidad
  • Aviso Legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los ajustes.

CARLOSZR.COM
Powered by  GDPR Cookie Compliance
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.