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 :

Comment manipuler des opérations ?


Sujet :

Design Patterns

  1. #1
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut Comment manipuler des opérations ?
    Bonjour,

    Je suis face à un problème qui me parrait assez simple mais finalement j'ai du mal à trouver la meilleur approche...

    Le principe est le suivant. Je dispose de différentes opérations simples (par éxemple : copier le fichier x vers y, écrire "bonjour" dans le fichier z ...). Je voudrais que l'utilisateur puisse selectionner les opérations à effectuer parmi une liste prédéfinie. Après validation du choix, les opération s'éxécutent les unes après les autres. Si une échoue, les opérations suivantes ne sont pas éxécutées. D'autre part, je voudrais qu'à chaque opération soit associé un nom et une description pour permettre à l'utilisateur de les reconnaitre et pour, éventuellement, générer un fichier de log.

    Les opérations en elles memes son définies avant compilation mais je voudrais qu'il soit facile de les modifier ou d'en ajouter.

    J'avais pensé faire une classe abstraite "AbstractOperation" puis, pour chaque opération, une classe qui implémente "AbstractOperation". Du genre (code C#) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    abstract public class AbstractOperation {
    		abstract public string Name { get; }
    		abstract public string Description { get; }
    
    		public void Execute() {
    			Console.Write("Execution de " + this.Name + " : ");
    
    			if (DoTheJob())
    				Console.WriteLine("Ok");
    			else
    				Console.WriteLine("Echec");
    		}
    		abstract protected bool DoTheJob();
    	}
    
    	public class TestOperation : AbstractOperation {
    
    		public override string Name {
    			get {
    				return "Test operation";
    			}
    		}
    
    		public override string Description {
    			get {
    				return "Une opération qui ne fait rien de particulier";
    			}
    		}
    
    		protected override bool DoTheJob() {
    			//C'est ici que je réalise l'opération
    			bool operationOk = true;
    			return operationOk;
    		}
    	}
    Mais je trouve la solution un peu lourde et tordue...

    Avez-vous une meilleur idée ? Un patern à m'indiquer ?

    Merci !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Je pense que c'est grosso modo l'idée, regarde le modèle de conception appelé command si tu veux être conforté dans la direction que tu as choisie

    MAT.

  3. #3
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    Oui ca ressemble beaucoup... J'avais surement déja vu ce pattern sans m'en souvenir...
    Je vais regarder de plus près. Merci pour le coup de pouce.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Oui bah c clair, le pattern Command est parfait.
    Caque element de ta liste doit implementer la methode execute.
    Et tu l'appelle sur tout les elements selectionnés.
    Un jeu d'enfant

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

Discussions similaires

  1. [c#] Comment manipuler des string ?
    Par Mickey.jet dans le forum C#
    Réponses: 4
    Dernier message: 27/05/2009, 09h14
  2. [2.0] Comment réaliser des opérations sur les ensembles ?
    Par Cereal123 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 23/10/2006, 14h01
  3. Réponses: 13
    Dernier message: 09/05/2006, 17h30
  4. Comment manipuler des .bin en C ???
    Par Spidermeu dans le forum C
    Réponses: 8
    Dernier message: 24/03/2006, 13h52
  5. Réponses: 1
    Dernier message: 17/03/2006, 23h23

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