cs_Taz1984
Messages postés47Date d'inscriptionlundi 20 juillet 2009StatutMembreDernière intervention13 mars 2013
-
25 févr. 2013 à 14:25
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 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 ?
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 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.