Design patterns

Résolu/Fermé
velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014 - Modifié par velocity le 14/08/2011 à 15:22
velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014 - 14 août 2011 à 15:58
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

velocity Messages postés 204 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 16 octobre 2014 6
14 août 2011 à 15:58
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,
0