1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 975
    Points : 11 782
    Points
    11 782

    Par défaut Design Pattern : les mémentos (Singleton)

    Un design pattern décrit une solution standard, utilisable dans la conception de logiciels, à des questions classiques et récurrentes.

    Cet article vous redonne les points clés pour utiliser les patterns les plus utiles. Il vous propose surtout de télécharger des mémentos à imprimer au bureau.

    Pour l'instant il n'y a que le Singleton mais d'autres mémentos suivront.

    http://thierry-leriche-dessirier.dev...tern-mementos/

    Bonne lecture
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  2. #2
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    mai 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2009
    Messages : 46
    Points : 245
    Points
    245

    Par défaut

    Merci pour cet article très intéressant. Le memento a une mise en page très pratique. C'est vraiment un super boulot.

    Une remarque sur le diagramme UML : instance et getInstance() ne devraient-elles pas apparaître comme attribut et opération de classe plutôt que comme attribut et opération d'instance ?

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 975
    Points : 11 782
    Points
    11 782

    Par défaut

    Une remarque sur le diagramme UML : instance et getInstance() ne devraient-elles pas apparaître comme attribut et opération de classe plutôt que comme attribut et opération d'instance ?
    Que veux-tu dire ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    mai 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2009
    Messages : 46
    Points : 245
    Points
    245

    Par défaut

    Je veux dire que instance et getInstance() pourraient-être soulignés pour signifier qu'il s'agit d'attributs et d'opérations de classe.

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 975
    Points : 11 782
    Points
    11 782

    Par défaut

    J'avoue que je n'ai jamais vraiment bien compris la différence entre attribut d'instance ou de classe. Ou disons l’intérêt de le mettre en avant, en Java. J'imagine que c'est plus important dans d'autres langages.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Membre actif
    Homme Profil pro
    Enseignant
    Inscrit en
    mai 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2009
    Messages : 46
    Points : 245
    Points
    245

    Par défaut

    Je n'ai sans doute pas été assez clair.

    Je voulais dire que instance est un attribut de la classe DogService - implémenté en Java avec le mot-clé static - et pas un attribut des instances de cette classe. Idem pour getInstance(). Cela n'apparaît pas dans le diagramme. Il faut souligner cet attribut et cette opération.

    Telle que modélisée par le diagramme, la classe DogService devrait s'implémenter comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class DogService {
      private DogService instance; // n'est pas static
     
      private DogService() {
        ...
      }
     
      public DogService getInstance() { // n'est pas static
        ...
      }
    }
    Ce qui n'est bien sûr pas un Singleton.

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 975
    Points : 11 782
    Points
    11 782

    Par défaut

    Ah oui, exact. Bien vu.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  8. #8
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2009
    Messages
    1 555
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 555
    Points : 3 742
    Points
    3 742

    Par défaut

    Et pour le pattern mémento, il y aura un mémento mémento?

  9. #9
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 975
    Points : 11 782
    Points
    11 782

    Par défaut

    Effectivement, il faudra que je trouve une formulation adaptée ;-)
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Analyste développeur COBOL, JAVA/J2EE, PHP, Zend, ...
    Inscrit en
    mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste développeur COBOL, JAVA/J2EE, PHP, Zend, ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2014
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Proposition d'un complément du mémento

    Bonjour,

    Par rapport à la méthode d'initialisation statique (fin de la page recto), vous avez précisé:

    Défaut :
    Initialisation au lancement, même si le service n'est finalement jamais utilisé
    Pourquoi donc ne pas déclarer juste la constante et l'initialiser plus tard dans la méthode getInstance? comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private static final DogService instance;
     
    public static DogService getInstance(){
        if(instance == null){
             instance = new DogService();
        }
        return instance;
    }
    Que pensez-vous.

    Cordialement.

Discussions similaires

  1. Design pattern Builder directeur Singleton
    Par totoche dans le forum Langage
    Réponses: 2
    Dernier message: 21/09/2009, 13h02
  2. Les Designs Patterns Entreprise
    Par boulon dans le forum Design Patterns
    Réponses: 4
    Dernier message: 01/09/2004, 19h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo