Singleton - WildCodeSchool/toulouse-0916-revisions GitHub Wiki

Le singleton est un design pattern a pour objectif de restreindre l'instanciation d'une classe à un seul objet.

Il est par exemple utile pour transmettre des informations ( modifier des variables par exemple ) d'une activité à une autre.

class StoreSingleton {

private static StoreSingleton INSTANCE;

private Boolean countIndice1;
private Boolean countIndice2;         Ici vous avez les [variables](https://github.com/WildCodeSchool/toulouse-0916-revisions/wiki/Variable) ( mettez les en [private](https://github.com/WildCodeSchool/toulouse-0916-revisions/wiki/private) puis donner leur le 
private Boolean countIndice3;         [type](https://github.com/WildCodeSchool/toulouse-0916-revisions/wiki/Type) qu'il leur faut. 


private StoreSingleton() {
    this.countIndice1 = false;
    this.countIndice2 = false;        Ici c'est le [constructeur](https://github.com/WildCodeSchool/toulouse-0916-revisions/wiki/Constructeur) privé
    this.countIndice3 = false;

}


public static synchronized StoreSingleton getInstance() {
    if (INSTANCE == null) {
        INSTANCE = new StoreSingleton();            Ce code nous sert à créer une seule fois l'[objet](https://github.com/WildCodeSchool/toulouse-0916-revisions/wiki/Objet) afin 
    }                                               qu'il n'existe qu'en un seule exemplaire.
    return INSTANCE;                                À ne surtout pas oublier.
}

public Boolean getCountIndice1() {
    return countIndice1;
}

public void setCountIndice1(Boolean countIndice1) {
    this.countIndice1 = countIndice1;
}

public Boolean getCountIndice2() {
    return countIndice2;
}

public void setCountIndice2(Boolean countIndice2) {
    this.countIndice2 = countIndice2;
}

public Boolean getCountIndice3() {
    return countIndice3;
}

public void setCountIndice3(Boolean countIndice3) {
    this.countIndice3 = countIndice3;
}

}

En toute fin voilà les getters et setters

Pour appeler et modifier nos variables il faut écrire le code suivant:

StoreSingleton.getInstance().setCountIndice1(true);

StoreSingleton = le nom qu'on a donner à la classe getInstance() = appel de la méthode getInstance setCountIndice1(true) = Le setter qui permet de passer la variable indice1 de false à true.

À quoi sert ce singleton dans la pratique ?

Dans l'application, il était nécessaire de trouver un moyen pour déterminer que les 3 éléments avaient été examinés avant de pouvoir passer à la suite du programme. En gros il y avait 3 indices et pour passer à la suite de l'histoire il fallait avoir lu les 3 indices. donc lors de chaque lecture de l'indice on passe la variable de l'indice qui est de base en false, en true. dans le code on peut donc écrire que si les 3 variables sont true on passe à la suite.