Design Pattern de construction

Le
Ghislain
Bonjour,
En fait je cherche un groupe dédié aux design pattern, si vous
connaissez ça m'intéresse.
J'ai besoin de créer une instance du même type qu'une variable dont
je ne connais pas le type.
Pour simplifier, prenons la classe abstraite Animal dont dérivent
Dog et Cat.
qqe part dans une méthode, j'ai :
void method (Animal animal){
// Il me faut une nouvelle instance du même type que Animal
Animal otherAnimal;
// Je sais que je peux écrire :
if (animal instanceof Dog)
otherAnimal = new Dog();
else if (animal instanceof Cat)
otherAnimal = new Cat();
}
Or nous savons tous que c'est ce qu'il ne faut pas faire. Je ne veux
pas rendre Cloneable la classe Animal parce que je ne veux pas une
copie mais vraiment une nouvelle instance toute neuve.
Merci pour votre aide,
Ghislain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre-Charles David
Le #16665851
Ghislain a écrit :
Bonjour,
En fait je cherche un groupe dédié aux design pattern, si vous
connaissez ça m'intéresse.
J'ai besoin de créer une instance du même type qu'une variable dont
je ne connais pas le type.
Pour simplifier, prenons la classe abstraite Animal dont dérivent
Dog et Cat.
qqe part dans une méthode, j'ai :
void method (Animal animal){
// Il me faut une nouvelle instance du même type que Animal



Utilises la réflection :

Animal otherAnimal = (Animal) animal.getClass().newInstance();

Cela suppose que toutes les sous-classes de Animal dont animal peut être
instance fournissent un constructeur par défaut (sans paramètres). Il
faut aussi gérer un certain nombre d'exceptions qui peuvent être levées
par #newInstance().
Ghislain
Publicité
Poster une réponse
Anonyme