Design patterns [Résolu/Fermé]

Signaler
Messages postés
203
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
16 octobre 2014
-
Messages postés
203
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
16 octobre 2014
-
Bonjour,

je développe en Java et je rencontre un problème que j'arrive pas à résoudre. voici le problème en résumé:

//j'ai une hierarchie de classes
interface IA{     
    traitements1;     
}     

abstract class A{     
    attribue1;     
    traitement1;     
}     

class B extends A{     
   traitements1;     
}     
class C extends C{     
   traitements1;     
}     


//et une classe qui choisie et instantie un objet de l'hierarchie à partir du nom de classe de classe de cet objet
class Usine{     
      
   A attributGenerique;  

  public void changeType(String type){     
      if(String.equalsIgnoreCase("B"))     
          attributGenerique = new B();     
      if(String.equalsIgnoreCase("C"))     
          attributGenerique = new C();     
  }   

  public A getReference() {  
       return attributGenerique;  
  }  
}     


//une autre classe qui dépent d'une instance de cette hierarchie, elle fait appel à Usine pour avoir la référence
Class D{     
         
    A reference;     
          
    reset(String type){      
        Usine.getNewClass(type);     
        produit = Usine.getReference();  
    }     
         
    action(){     
         produit.methode1();     
    }     
           
}     


cependant ce que j'ai décrit n'est pas faisable car il y a des erreurs de conversion .
J'aimerait savoir s'il y a une solution à ce problème en design patterns et si oui laquelle ?

merci,


1 réponse

Messages postés
203
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
16 octobre 2014
5
d'une autre façon, le problème c'est que je veut creer un objet qui change de classe au cours de l'execution du programme.

la solution que j'ai trouvé, c'est creer une instance de chaque sous classe et un attribue "type" qu'on utilise pour diriger le traitement vers l'instance voulu. comme ca:

classe Usine{

SousClasse1 obj1;
SousClasse2 obj2;
SousClasse3 obj3;

String type;

public Usine(type){
this.type = type;
obj1 = new SousClasse1();
obj2 = new SousClasse2();
obj3 = new SousClasse2();
}

public void traitement (){
switch(type){
case "SousClasse1" : obj1.traitement();
case "SousClasse2" : obj2.traitement();
case "SousClasse3" : obj3.traitement();
}
}

}


c'est pas mal non ?
Si avez une autre solution, je serait ravit de la connaitre .
merci,