Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre chevronné

    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 402
    Points : 762
    Points
    762

    Par défaut POO design pattern Singleton avec Windev

    Bonjour à tous,
    avant de demander humblement la publication d'un mini article je vous sollicite pour vos impressions sur ceci :

    Le design pattern singleton en WD Langage :


    Ce Pattern est peut-être le premier pattern que j'ai appris en POO
    Car c'est un des plus simples à comprendre.
    Il s'agit comme le dit très bien wotre cyber encyclopédie préférée de créer une classe dont on ne peut implémenter d'un seul et unique objet (attention quand même en multi-thread.

    Le but de l'article n'est pas de théoriser ce pattern mais de le traduire en WDlanguage en voici la recette :

    On crée un projet (sans base de donnée) pour aller plus vite le projet en ZIP version 17 est en pièce jointe.
    Dans ce projet une fenêtre
    Dans cette fenêtre un champ de saisie "saisie"
    Un bouton "Voir"
    Un bouton "Ajouter+1"

    On crée une classe Singleton (original non?)
    Voici la déclaration :
    Code :
    1
    2
    3
    4
    5
    6
    Singleton est une classe
    	membre est un entier
    	GLOBAL
    	single est un Singleton dynamique
    FIN
    single est mon instance, elle figure dans la déclaration en global c'est le point le plus important de cette classe avec le fait que le constructeur soit privé :

    Code :
    1
    2
    PROCEDURE PRIVÉ GLOBAL Constructeur()
    Mettre le constructeur privé va interdire l'instanciation d'un objet en dehors de la classe et on évite d'avoir plusieurs instances grace à la méthode getInstance() dont voici le code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    PROCEDURE GLOBAL getInstance()
    SI ::single=Null ALORS
    	::single=allouer un Singleton
    SINON
    FIN
    	RENVOYER ::single
    On comprends bien alors que si un objet singleton existe déjà on le renvoi au lieu de recréer une instance. Tous les appels à l'objet se font donc via cette méthode.

    Pour accéder au membre "membre" on écrit : Singleton.getInstance().membre
    sans avoir ni a déclarer ni a allouer l'objet.

    Du coup dans le code du projet on ne met RIEN
    Dans le code de "saisie" on ne met RIEN

    Dans le code "clic" du bouton "Voir" on écrit :
    Code :
    Saisie1=Singleton.getInstance().membre
    et dans celui du bouton "Ajouter+1"
    Code :
    Singleton.getInstance().membre++
    A chaque clic sur "voir" on récupère la valeur de "membre"
    A chaque clic sur "Ajouter" on incrémente "membre"

    Alors très bien me direz vous, très joli mais à quoi ça va me servir ?
    Dans pas mal de langages on utilise le pattern singleton pour limiter les objets de connexion à la base de donnée à une seule instance.
    Dans Windev c'est rarement le cas car en général on utilise un objet Connexion qui existe par défaut dans votre analyse.

    On peut envisager d'utiliser ce pattern si on utilise une base externe sans analyse avec un objet de connexion qu'on rappelle souvent.

    Personnellement une autre de mes utilisations régulières est dans la gestion des fichiers de log. J'écris un objet Journal qui utilise ce pattern avec une méthode "ecritLigne"
    et je lance facilement des appels du type :
    Code :
    Journal.getInstance().ecritLigne("cette opération ...")
    Sans avoir à me soucier des déclarations.

    Voilà j'attends vos réactions pour les modifications.
    Merci d'avance





    Dans le projet
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Homme Profil pro Yannick M
    Étudiant
    Inscrit en
    janvier 2010
    Messages
    158
    Détails du profil
    Informations personnelles :
    Nom : Homme Yannick M
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2010
    Messages : 158
    Points : 162
    Points
    162

    Par défaut

    Merci !

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : novembre 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    un mot aussi: merci!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •