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

Design Patterns Discussion :

Demande d'avis sur un Design Pattern Decorateur sur une liste avec une Stratégie [GOF]


Sujet :

Design Patterns

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Par défaut Demande d'avis sur un Design Pattern Decorateur sur une liste avec une Stratégie
    Salut,

    Dans le cadre d'un projet J2EE, j'ai pensé à ce qui pourrait être un DP intéressant, quoiqu'assez spécialisé. Je l'ai nommé "Ordonner" et sa vocation serait de modéliser les processus de tri de manière trés modulaire. Voici à quoi ressemblerait le diagramme de classes :




    Les avantages sont :
    1. Le processus de tri est totalement séparé des objets à trier.
    2. Le critère de comparaison des objets est indépendant de l'algorithme de tri. Il peut donc être modifié, remplacé, manipulé dynamiquement.
    3. L'algorithme de tri étant lui aussi indépendant, il peut être choisi dynamiquement selon une stratégie d'optimisation des performances.


    Par exemple (c'est un exemple très bête...), on voudrait ordonner certaines villes de France selon la proximité de leur température journalière avec la moyenne nationale.

    La Target serait la liste de ces villes (à priori pas du tout faîtes pour être ordonnées ainsi), l'Ordonner contiendrait plusieurs algos de tri choisi en fonction de la taille de la liste (nationale, régionale, ...), et le Comparer irait chercher la moyenne du jour pour trouver, entre deux villes, laquelle est la plus proche.

    J'aimerais avoir :

    1 - Votre avis sur la modélisation du diagramme.

    2 - Votre avis sur la pertinence du concept.

    3 - Savoir s'il existe des organisations d'homologation et de diffusion des design patterns. Je pourrais tenter ma chance...


    Merci !

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Si j'ai bien compris, ton "Ordonner" est en fait un Decorateur sur une liste avec une Stratégie pour savoir sur quels critères trier la liste, c'est ça? Dans ce cas, c'est l'association des patterns Decorateur et Strategy. Intéressant, mais de là à en faire un nouveau pattern...

    Par ailleurs, ce design reprend un concept connu depuis fort longtemps en Java (et pas uniquement) : le Comparator (ici, renommé "Comparer"). Bref, c'est pas très nouveau.

    Citation Envoyé par N_I_C_S
    1 - Votre avis sur la modélisation du diagramme.
    C'est correct, à part la flèche entre Invoquer et Target dont on a du mal à comprendre l'intérêt (dans le cas où "ConcreteOrdonner" est un décorateur, on n'accède pas directement à la liste "Target").

    Citation Envoyé par N_I_C_S
    2 - Votre avis sur la pertinence du concept.
    Exprimé en début de message.

    Citation Envoyé par N_I_C_S
    3 - Savoir s'il existe des organisations d'homologation et de diffusion des design patterns. Je pourrais tenter ma chance...
    Merci !
    Pas à ma conaissance.


    A part ça, c'est un excellent premier message, avec une idée intéressante. J'espère qu'on te reverra bientôt sur les forums de DVP pour nous exposer tes idées.

    @+
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810

  4. #4
    Membre chevronné
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Par défaut
    Ok, merci pour vos éclairages.
    En fait, je ne connais que peu de design patterns, je me doutais un peu que d'autres structures existaient déjà...

    Citation Envoyé par pcaboche
    C'est correct, à part la flèche entre Invoquer et Target dont on a du mal à comprendre l'intérêt (dans le cas où "ConcreteOrdonner" est un décorateur, on n'accède pas directement à la liste "Target").
    Effectivement, maintenant que tu le dis, cette flèche est assez maladroite. En fait, je voulais représenter le fait que l'Invoker avait pour rôle d'envoyer la Target à l'Ordonner.Ca ne mérite peut-être pas une relation...

    Merci à tous et a++

  5. #5
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Billets dans le blog
    2
    Par défaut
    Juste un point, tout ce que tu présente est du standard dans l'API Java. Je ne vois pas pourquoi le ré-inventer !?

  6. #6
    Membre chevronné
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Par défaut
    Salut eqo,

    je suppose que tu parles de l'interface Comparable et de la méthode Collections.sort(). Le problème est que ce système a 2 limitations qui ne me convenaient pas : d'une part il oblige à implémenter l'interface d'avance à l'intérieur de chaque classe susceptible un peu, beaucoup, peut-être, peut-être pas d'être triée un jour, et d'autre part on n'a aucun contrôle sur l'algo de tri (je crois que l'algo de java est le tri à bulle, pas forcément le plus performant en toutes circonstances).

    De plus, pour des raisons de performance, je voulais éviter les liaisons dynamiques. En fait, mon projet est une plate-forme 3D 100% software, ma recherche est donc portée prioritairement sur la rapidité. Le p'tit dessin du premier message est une généralisation, dans mon projet je n'ai pas utilisé d'interface ou de classe abstraite.

    Voilà, mon but était de rajouter un système de tri rapide et modulaire sans toucher à des objets déjà existants, ce que la lib java ne propose pas vraiment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Meilleur livre sur les design patterns en Java?
    Par JFortranDoc dans le forum Logging
    Réponses: 5
    Dernier message: 15/06/2006, 01h19
  2. Recherche de doc sur les Design pattern
    Par MicroPuce dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 09/05/2005, 15h58
  3. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35

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