IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

POO design pattern Singleton avec Windev


Sujet :

Contribuez

  1. #1
    Membre éprouvé

    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 : 915
    Points
    915
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Saisie1=Singleton.getInstance().membre
    et dans celui du bouton "Ajouter+1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 161
    Points : 221
    Points
    221
    Par défaut
    Merci !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    un mot aussi: merci!

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/07/2008, 14h53

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