Les patrons de création

Les cinq patrons de création du catalogue GoF : Singleton, Fabrique, Fabrique abstraite, Monteur et Prototype. Leur intention, leurs participants, un exemple de code et leurs limites.

  • 25 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Comprendre

Quelques cartes du deck

  • Singleton : de quoi s'agit-il ?

    Voir la réponse

    Patron de création qui garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci.

    Le constructeur est privé et la classe garde son unique instance dans un attribut statique. Le point d'accès global est aussi son défaut : il cache une dépendance et gêne les tests.

  • Ce Singleton laisse créer deux instances, même dans un programme sans concurrence. Pourquoi ?

    ```java
    public class Config {
    private static Config instance;
    public Config() { }
    public static Config getInstance() {
    if (instance == null) {
    instance = new Config();
    }
    return instance;
    }
    }
    `

    • Le constructeur est public : new Config() crée un second exemplaire
    • L'attribut instance est static : il est réécrit à chaque appel de getInstance
    • getInstance est statique : chaque classe appelante obtient sa propre copie
    • La condition instance == null crée un objet à chaque appel
    Voir la réponse

    Le constructeur est public : new Config() crée un second exemplaire

    Rien n'empêche un autre code d'appeler le constructeur public : l'unicité n'est plus garantie. Il faut le déclarer private. L'attribut statique n'existe qu'en un exemplaire pour toute la classe, getInstance statique renvoie ce même objet à tous les appelants, et la condition ne crée l'objet qu'au premier appel.

  • Pour qu'une classe ne puisse avoir qu'une seule instance, son constructeur est … et elle garde l'instance dans un attribut ….

    Voir la réponse

    Pour qu'une classe ne puisse avoir qu'une seule instance, son constructeur est privé et elle garde l'instance dans un attribut statique.

    Avec un constructeur public, n'importe quel code ferait new et créerait un second exemplaire : la garantie d'unicité tomberait.

  • Fabrique (Factory Method) : de quoi s'agit-il ?

    Voir la réponse

    Patron de création qui définit une méthode de création dans une classe mère et laisse les classes filles décider quelle classe concrète instancier.

    Le code du créateur appelle la méthode de fabrication et ne connaît que le type du produit, jamais sa classe concrète. Ajouter un produit revient à ajouter une classe fille.

  • Avec une Fabrique abstraite, pourquoi l'application ne peut-elle pas afficher un bouton clair à côté d'un menu sombre ?

    • Chaque widget vérifie à sa création le thème des widgets déjà créés
    • Tous ses widgets viennent de la même fabrique concrète, choisie une seule fois
    • Les widgets clairs et sombres héritent d'une même classe concrète
    • Le client teste le thème courant avant chaque appel à new
    Voir la réponse

    Tous ses widgets viennent de la même fabrique concrète, choisie une seule fois

    Le client ne fait jamais new sur un widget : il demande creerBouton() et creerMenu() à une seule fabrique, claire ou sombre. La cohérence de la famille tient à ce choix unique, pas à des vérifications dispersées.