Es un patrón de diseño creacional. Con este patrón conseguimos tener SOLO una instancia en toda la app de una clase. El mismo objeto es compartido en distintas partes del código.
Ejemplo de Singleton en Swift
Una instancia para acceder a la base de datos o para acceder a web service. A continuación pongo un ejemplo sencillo de singleton.

Las ventajas del patrón singleton
Aunque también tiene sus inconvenientes, el patrón singletón tiene varias ventajas. Una de ellas es que podemos tener controlado el acceso a la clase, ya que la única instancia de la clase se encuentra encapsulada dentro de la propia clase. Por ejemplo, si nos conectamos a la base de datos, seguramente sólo queremos tener un único acceso cada vez. Esto también se aplica a un web service.
Como desventaja tenemos que comentar lo que siempre se dice del patrón singleton. Se dice que es un antipatrón. ¿Y qué es un antipatrón? Llamamos antipatrón al singletón porque es muy difícil testear su código ya que garda siempre la misma referencia en los tests. Por ello, se suele crear inyección de dependencias para crear singleton de las clases que queremos.
El patrón Singleton tiene varias desventajas más, tales como:
- Su falta de flexibilidad: no es posible extender la clase Singleton sin modificar su código.
- Desacoplamiento limitado: El patrón Singleton limita la capacidad de aislar las dependencias en la aplicación, lo que puede dificultar el mantenimiento y la escalabilidad.
- Dificultad para trabajar en equipo: Cuando varios desarrolladores trabajan en un proyecto que utiliza el patrón Singleton, es fácil que ocurran conflictos o errores debido a la naturaleza global y única del objeto.
- Testabilidad limitada: Es difícil probar clases que utilizan el patrón Singleton debido a su naturaleza. Su naturaleza es global y única.
Como conclusión final podemos decir que, el patrón Singleton puede resultar ser útil en situaciones muy específicas, pero en general es recomendable evitarlo si debido a sus limitaciones podemos vernos perjudicados por sus deventajas.
Deja una respuesta