Conception Classe Pattern

cs_Taz1984 Messages postés 47 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 13 mars 2013 - 25 févr. 2013 à 14:25
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 25 févr. 2013 à 14:39
Bonjour,

Je suis sur un problème de conception JAVA.

Voici les données :
J'ai 3 fichiers (type 1, type 2 , type 3) que je dois leur appliqué des contrôles , je peux faire trois modules dans chacune placés les contrôles pour chaque fichiers.

Cependant, il y a des contrôles commun pour ces 3 fichiers , je propose une idée. J'aimerai avoir votre avis, je voudrais créer une Interface "Control" dans laquelle je place tous les contrôles ainsi j’implémenterai pour chaque type de fichier l'implementation associé.

Mais, comment puis je faire pour ne pas ré implémenté les contrôles déjà utiliser par le fichier de type 1 par exemple que je voudrais ré utiliser pour le type 2.

Je pense que j'y suis presque, y a t il un design pattern adapté à ce genre de conception ?

Merci pour votre aide

1 réponse

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 févr. 2013 à 14:39
Salut,

Ce n'est pas un design pattern mais une utilisation de l'abstraction.

Au lieu de créer une interface, tu peux créer une classe abstraite et tu places les contrôles communs dans cette classe.

S'ils ne sont pas communs à tous les types. Tu peux créer un singleton dans lequel tu places tes fonctions de contrôle que tu pourras appeler dans tes trois types de classes sans problème.

Pour le faire de manière très propre. Tu peux créer une interface IControle qui ne contient qu'une méthode

public boolean control();


Pour chaque contrôle que tu fais, tu créés une nouvelle classe qui implémente cette interface.

Ensuite, tu créés une classe abstraite TypeFichier

public abstract class TypeFichier {

   private List controlesAEffectuer;

   //Et le constructeur ou les setters qui font avec

   public boolean control(){
      boolean ok=true;
      for(IControle c : controles){
          if(!c.control()){
             ok=false;
          }
      }
      return ok;
   }
}


De cette manière, tu as créé un objet Controle assez simple à tester et à maintenir.
0
Rejoignez-nous