Le pattern singleton en Swift

Aujourd’hui nous allons voir comment implémenter en Swift un des patterns les plus contesté : le singleton. Le pattern singleton résout à la fois la connection avec les objets du monde réel et les problèmes d’encapsulation des ressources partagées en veillant à ce qu’il n’y a jamais plus d’une seule instance dans l’application. Cet objet à la particularité de pouvoir être accéder de n’importe et donc d’être connu de tous les autres objets.


Quand on implémente un singleton il ne faut pas oublier ces quelques règles :

  • Le singleton doit être la seule instance de ce type qui existe.
  • Le singleton ne peut pas être remplacé par un autre objet, même du même type.
  • Le singleton doit être accessible par tous les composants qui ont besoin de l’utiliser.

L’implémentation

L’implémentation en Swift est on ne peut plus simple :

/**
 * Implémentation simple d'un singleton.
 *
 * L'instance est créée à l'initialisation.
 */
public class Singleton {
  public static let sharedInstance = Singleton()

  private init() {
    // L'initialisation est privé pour être sur qu'une seule instance sera créé
  }
}

Ici on créer notre classe Singleton qui possède un initialiseur priver pour empêcher la création de plusieurs instances. La partie très importante c’est la variable sharedInstance qui est static donc accessible en tant que variable de classe. Swift nous garantie avec cette déclaration que notre variable sera initialisé qu’une seule fois et nous protège de la concurrence entre plusieurs thread.

L’utilisation

Voici un petit example de la manière dont on appel un singleton :

let instance = Singleton.sharedInstance

Dès qu’une classe à besoin d’utiliser ce singleton il lui suffit de faire appel elle de cette manière.

Conclusion

J’espère que ce petit tutorial vous à permis de comprendre un peu mieux ce concept de singleton. Si vous souhaitez en savoir plus sur ce patron de conception vous pouvez jetez un coup d’oeil sur wikipédia pour comparer avec d’autres languages.

1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (1 votes, average: 5,00 out of 5)
Loading...
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestShare on RedditDigg this

Aucun commentaire

Time limit is exhausted. Please reload CAPTCHA.