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

WinDev Discussion :

Singleton observer POO


Sujet :

WinDev

  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 Singleton observer POO
    Bonjour,

    je suis en train de bosser sur un exmple de pattern observer observable.
    Que je vous livrerai bientôt.
    Mais en avançant une question me trouble :
    l'objet observer doit il être un singleton?
    (pardon pour ceux qui ont lu ces lignes en toussant)

    Car j'ai deux classes de base ; Observable et Observer

    Dans Observable je dois avoir une methode notifyObserver() et une methode abonneObserver() et desAbonneObsever()

    Or en combinant un pattern Singleton pour la classe Observer c'est très intéressant car je peux faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Publisher est un Observer
    Subscriber est un Observable
    Subscriber.abonneObserver()
           // dans cette méthode j'ai un truc comme Observer.getInstance()
    et de la même manière je simplifie énormément mes appels de méthodes
    Subscriber.notifyObserver() et Subscriber.notifyObserver()

    La question est donc :
    Trouvez vous ça pertinent ou est ce trop casse gueule?
    Merci de vos lumières

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Citation Envoyé par Atsibat Voir le message
    Trouvez vous ça pertinent ou est ce trop casse gueule?
    Je dirai ni l'un ni l'autre, ça dépend du besoin.
    Le problème en rendant l'observer unique, c'est que tu ne peux n'en n'avoir qu'un (c'est profond çà ). Est-ce vraiment ce que tu veux ?

    Ca va certainement simplifier ton code au premier abord, mais le jour où tu veux abonner 2 instances différentes à un "événement", tu devrais reprendre tout ce code.

    Tatayo.

  3. #3
    Membre éprouvé Avatar de wimbish
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 416
    Points : 1 073
    Points
    1 073
    Par défaut
    Je plussoie Tatayo,

    Citation Envoyé par tatayo Voir le message
    Le problème en rendant l'observer unique, c'est que tu ne peux n'en n'avoir qu'un (c'est profond çà ).
    Tatayo.
    C'est profond mais tellement vrai et c'est le fond du problème.

    Garde ton pattern Observeur(s) Observer tel qu'il est.
    A mon avis est qu'il est plus simple de limiter une fonctionnalité que de la créer.
    Christophe.

    Tous les chemins mènent à Rome http://doc.pcsoft.fr/fr-FR/

  4. #4
    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
    Bonjour et merci de vos réponses.

    Evidement pour être concis et éviter un message si long qu'il décourage votre bonne volonté j'avais pris quelques raccourcis (mauvais).

    Complétons donc :
    partant du principe qu'un observer attend un certain changement pour ses abonnés je ne comprends pas pourquoi il devrait y avoir plusieurs instances de cet observer. J'illustre par l'exemple:

    Imaginons la gestion d'une salle de bowling dont certains joueurs ont des cartes d'abonnement qui leur donne droit à 20 parties. Un abonné peut parier une ou plusieurs parties gratuites avec d'autres abonnés. Si il gagne sa carte est incrémenté de la valeur du pari et les cartes des perdants sont décrémentées.
    (c'est juste pour l'exemple car en fait on gèrerai les parties avec la BD)

    Une classe observerGenerik assez générique pour me permettre d'abuser du polymorphisme entre plusieurs classes d'observer heritières.

    Une classe ObserverEtatAbonnés qui observe des objets Abonné et qui hérite de observerGenerik
    Je passe cet observer en singleton.

    Et une classe ObserverClassementJoueurs qui observe des objets Joueur et qui hérite de observerGenerik
    Je passe aussi cet observer en singleton

    Et un objet Client qui hérite de Abonné et de Joueur
    (ok si Windev le pouvait on travaillerai plutôt en interface mais passons)

    L'objet client s'abonne à ObserverEtatAbonnés et à ObserverClassementJoueurs.

    Quand un point est marqué l'objet Client passe l'info à son observer ObserverClassementJoueurs et tous les classement des joueurs sont mis à jour.
    Quand une partie est gagnée Client passe l'info à son observer ObserverEtatAbonnés et le solde des parties par abonné est mis à jour.

    Ici j'ai donc un objet Client qui peut sans problème être abonné à plusieurs observer chacun en singleton.
    Donc je ne comprends pas en quoi je serai limité par le passage des observer en singleton...
    Suis-je dans l'erreur?
    merci

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Citation Envoyé par Atsibat Voir le message
    Ici j'ai donc un objet Client qui peut sans problème être abonné à plusieurs observer chacun en singleton.
    Donc je ne comprends pas en quoi je serai limité par le passage des observer en singleton...
    Suis-je dans l'erreur?
    merci
    Comment peux-tu avoir plusieurs instances de ton observer, si c'est un singleton ?

    Tatayo.

  6. #6
    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
    Bonjour Tatayo,
    Comment peut tu répondre si tu ne lis pas le message.
    (je mets en gras le mot qui a du t'échapper)
    Ici j'ai donc un objet Client qui peut sans problème être abonné à plusieurs observer chacun en singleton.
    Bonne journée et merci d'avoir lu les premières lignes

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    J'ai parfaitement lu ton message ...
    Je voulais juste remarquer que tous les clients DOIVENT s'abonner au même ObserverEtatAbonnés et au même ObserverClassementJoueurs, puisque tu ne peux avoir qu'une instance de chaque.
    Maintenant si ça correspond à ton besoin, pourquoi pas. Mais le jour où ce besoin change, tu risques d'être coincé.

    Tatayo.

Discussions similaires

  1. [POO] Utilité d'un singleton en php5
    Par WalidNat dans le forum Langage
    Réponses: 1
    Dernier message: 26/05/2007, 15h08
  2. [POO] Singleton en PHP et persistance
    Par ProximIT dans le forum Langage
    Réponses: 10
    Dernier message: 14/12/2006, 16h27
  3. [POO] Singleton et changement de page
    Par RR instinct dans le forum Langage
    Réponses: 6
    Dernier message: 21/11/2006, 05h58
  4. Réponses: 2
    Dernier message: 24/08/2006, 22h39

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