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 :

quel design pattern: Visitor, Strategy ou commande???


Sujet :

Design Patterns

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut quel design pattern: Visitor, Strategy ou commande???
    Bonjour,
    J'ai une situation ou je dois résoudre un problème encapsulé dans un seul objet. je dispose d'un ensemble de solvers (algorithmes), chacun permet d'avancer (ou pas) la resolution du problème. Les solvers sont fournis par une librairie externe, je ne peux que les utiliser (je peux les encapsuler dans des classes que je peux manipuler!). Le resultat d'un solver est contenu dans le problème lui même (i.e le probleme est juste moins dur après le passage de ce solver). je fais passer les solvers selon un ordre defini par un choix dynamique en analysant la complexité de probleme. Il se peut qu'un solver ne soit jamais solicité; on fait passer les solvers jusqu'a ce qu'on resoud le probleme, le nombre d'itérations fini biensur (pour pas tourner eternellement)

    1. J'ai pensé a utiliser le Pattern Visitor:

    Un solver est encapsulé dans un visitor, chaque visitor visite l'objet encapsulant le probleme; un autre pattern (quoi?) analyse l'objet et retourne le visitor a utiliser... ceci jusqu'a resolution de problème ou depassement de nombre maximum d'itération.

    2. on m a dit d'essayer le pattern commande: mettre tous les solvers dans une collection de commandes (chaque solver est encapsulé dans une commande) puis les faire passer...

    3. les concepts cités dans la description ci-dessus me font penser au pattern Strategy (algo, execution...), mais bon je vois pas trop comment faire !

    vous utiliserez quoi a ma place ?



    Merci...

  2. #2
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Salut,

    est-ce que les phases suivantes sont compliquees:
    - determiner si le probleme est resolu
    - determiner la complexite du probleme
    - savoir quels solvers utiliser

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    1- Determiner si le probleme est résolu: trivial, toutes les variables de probleme ont un status "resolved"
    2- La complexité de probleme: il est pas facile de savoir si le probleme est compliqué ou pas, justement le fait de le resoudre rapidement nous donne une idée la dessus --> impossible donc a savoir avant la fin de la resolution dans tel cas on mesure le temps, le nombre d'itérations..etc..

    3- savoir quel solver utiliser: relève de l'intélligence artificielle, je dispose de pas mal de classes pour faire l analysede probleme ...pas tres difficile.

  4. #4
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Je ne saisis pas tout, mais peut etre que tu pourrais t'orienter vers une implementation du BLACKBOARD.

    "The Blackboard architectural pattern is useful for problems for which no deterministic solution strategies are known. In Blackboard several specialized subsystems assemble their knowledge to build a possibility partial or approximate solution." (Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, England: John Wiley & Sons Ltd., 1996)

    Peut etre que ton objet probleme peut prendre le role du Blackboard, son etat refletant une avancee partielle.
    Ta classe qui va bouclee prend le role du Controlleur.
    Apres pour les solveurs, je ne sais pas comment tu les utilises mais surement que les regrouper au sein d'une hierarchie est une bonne chose: pourquoi pas Command ou Knowledge Source dans la reference plus haut.
    Je pense que ca peut etre une bonne idee de partir la dessus

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Pas mal ca, je vais me documenter et chercher sur internet pour mieux comprendre; merci beaucoup pour tes reponses ndp!

Discussions similaires

  1. Quel Design Pattern choisir?
    Par Aïssa dans le forum Design Patterns
    Réponses: 20
    Dernier message: 24/01/2007, 17h12
  2. Réponses: 9
    Dernier message: 05/12/2006, 10h00
  3. [Curiosité] design pattern visitor et compilation
    Par krokmitaine dans le forum C++
    Réponses: 6
    Dernier message: 10/11/2006, 15h06
  4. Réponses: 5
    Dernier message: 21/06/2006, 14h47
  5. Quel design pattern pour réaliser une synthèse
    Par jbwan dans le forum Design Patterns
    Réponses: 3
    Dernier message: 21/04/2006, 12h39

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