Programación Orientada al Protocolo en Swift
El lenguaje de programación Swift fue lanzado en 2014 por Apple.Inc en su conferencia anual WWDC y desde entonces se ha convertido en el lenguaje más popular para la comunidad de desarrolladores de Apple. Hoy, les presentaré un nuevo paradigma de programación llamado Programación Orientada al Protocolo en swift, que se nos presentó básicamente en la WWDC 2015 como una actualización en forma de Swift2.o, uno de su tipo en el segmento.
El enfoque orientado al protocolo se introdujo para resolver algunos problemas en la programación y también difiere en varios escenarios en comparación con la programación orientada a objetos.  Así que vamos a sumergirnos en el tema.

¿Qué Es La Programación Orientada Al Protocolo?

Los protocolos básicamente sirven como un  modelo de clases en lugar de tipos completamente funcionales para métodos, propiedades y otros requisitos. Esto se hace para realizar una parte de la funcionalidad y se comporta como una interfaz y le dice qué implementar. Es una característica poderosa del lenguaje Swift. Apple nos dice:
                                                  "No empieces con la clase, comienza con el protocolo"

¿Por Qué Necesitamos POP?

Cuando diseñamos cualquier sistema de software, entonces determinamos los requisitos generales que satisfacen el sistema dado. Nosotros, incluso modelamos la relación b / w los elementos de la interfaz de usuario, como botones, vistas, imágenes, etc., para los cuales generalmente comenzamos con superclase y modelamos  las relaciones mediante herencia.
En Swift, como tenemos el concepto de POP, podemos  comenzar con protocolos y modelar las relaciones  como implementaciones de protocolos. En el enfoque orientado al protocolo,  modelamos nuestro sistema con un protocolo,  confiamos en conceptos como:
  • Extensiones de protocolo
  • Herencia de protocolo
  • Composición del protocolo 
En Swift, utilizamos  estructuras, enumeraciones y tuplas en  lugar de trabajar solo con clases, ya que la  Semántica de valor se prefiere a los Tipos de referencia.
Además, podría haber varios casos en los que la OOP no sea la mejor solución para implementar. Revisemos y resolvamos los inconvenientes en el  concepto orientado a objetos. Sabemos que la herencia es uno de los conceptos más importantes en OOP , pero la herencia no funciona para los tipos de valor  y los lenguajes modernos como Swift prohíbe admitir la característica de múltiples herencias  debido a las complejidades y los tipos de valor es el primer ciudadano de Swift. Entonces, POP hace un gran trabajo al proporcionar la capacidad de agregar múltiples habilidades a la clase, estructura y enumeración con protocolos y extensiones que admiten múltiples implementaciones mientras codificamos. Otros beneficios con las implementaciones de protocolo son:
  • Swift comprueba si los requisitos del protocolo están completos o no para las clases que estamos implementando en tiempo de compilación, por lo tanto, esto nos ayuda a descubrir si hubo algún problema o error en el código incluso antes de ejecutar nuestro programa.
  • Además, los protocolos traen más mecanismo de abstracción que las clases en Swift.
  • No estamos restringidos a usar solo clases,  ya que cualquier tipo, incluidos los tipos de valor,  puede implementar un protocolo. 
  • Un tipo puede implementar múltiples protocolos.
  • Podemos crear tantos protocolos como necesitemos.
Antes de hablar en detalle sobre POP y cómo usarlo e implementarlo, debemos entender los conceptos básicos correctamente, así que primero nos centraremos en Swift Types . Aquí está la representación esquemática de los tipos Swift que tenemos.
Bueno, aquí estoy interesado en el comportamiento de Clases y Estructura, uno pertenece al tipo de referencia y otro al tipo de valor y observa cómo se comportan los objetos a través de un ejemplo.
Y, esto es realmente importante de entender y por qué es así? Si tiene una jerarquía muy compleja y establece algo en una parte del código, no debería tener consecuencias erróneas en la otra parte. Entonces, la lección es:
  • Las clases utilizan la referencia, es decir, si establece algo en otra, no es una copia, sino que es una referencia.
  • Considerando que, en el tipo de valor como estructuras, pasa cosas como una copia, no como una referencia.

Conclusión

Apple, siempre recomienda ir con el tipo de valor mientras programamos en Swift. Las estructuras son preferibles cuando tenemos una copia pequeña de los datos y es mucho más seguro que tener múltiples referencias a los mismos objetos en nuestro código. El concepto se vuelve más importante cuando hablamos de variable y pasamos su valor. En Swift, trabajamos en un entorno de múltiples subprocesos y si tenemos copias de la variable, no tenemos que preocuparnos por ellas en el otro lugar donde el valor puede cambiar. Por lo tanto, Apple aconseja el uso de la estructura y la Programación Orientada al Protocolo sirve mejor abstracción con estructuras.
Usando Protocolos y sus funciones de extensiones, podemos ignorar / evitar realmente hacer una gran superclase y luego heredar la funcionalidad de allí. Entonces, espero que ahora esté claro para ti qué es POP y por qué Apple usa esto.
Nota: Esto no significa que no usemos Clase, hay algunas situaciones donde las clases son la única opción que queda para nuestra implementación.
En la otra parte de este artículo, veremos cómo implementar y usar protocolos, extensiones de protocolo, genéricos con el protocolo.