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:

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



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

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.

Deja una respuesta