Permettez-moi de briser votre question en deux parties
(1) Contrairement constructeurs peuvent renvoyer un objet d'un sous-type de leur type de retour
(2) qui vous donne une grande flexibilité dans le choix de la classe d'objet retourné.
Disons que vous avez deux classes étendues de Player
qui sont PlayerWithBall
et PlayerWithoutBall
public class Player{
public Player(boolean withOrWithout){
//...
}
}
//...
// What exactly does this mean?
Player player = new Player(true);
// You should look the documentation to be sure.
// Even if you remember that the boolean has something to do with a Ball
// you might not remember whether it specified withBall or withoutBall.
to
public class PlayerFactory{
public static Player createWithBall(){
//...
}
public static Player createWithoutBall(){
//...
}
}
// ...
//Now its on your desire , what you want :)
Foo foo = Foo.createWithBall(); //or createWithoutBall();
Ici, vous obtenez les deux réponsesFlexability et contrairement comportement constructeur Vous pouvez maintenant voir par ces méthodes d'usine Vous avez le type de lecteur dont vous avez besoin
Voici l'avantage d'avoir une seule méthode d'usine Si je voulais qu'une variable d'objet de type parent contienne un objet du type de la sous-classe, je peux demander à un constructeur de la sous-classe de générer quel est le problème. Je ne comprends pas comment cela pourrait être un chose utile à faire. –
@ david.colais Ce lien a une longue liste avec des explications sur les différents avantages: http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1 –