L'usine de Java lorsque des objets concrets prendre différents paramètres du constructeur
Je suis en train de mettre en œuvre un modèle de Fabrique en Java.
J'ai une classe appelée Forme de Cercle et de Triangle s'étend.
Le problème est que la Forme constructeur obtient seulement 2 paramètres alors que le Cercle se 3 paramètres et est donc le Triangle (que je ne vais pas vous montrer dans la section de code, car il est identique au Cercle).
Démontrer qu'il a de mieux:
private interface ShapeFactory{
public Shape create(int x, int y);
}
private class CircleFactory implements ShapeFactory{
public Shape create(float radius, int x, int y){ //error
return new Circle(radius, x,y);
}
}
Toutes les idées sur la façon de surmonter ce problème? Je ne dois pas recevoir une entrée d'utilisateur à l'intérieur de l'usine (doit être reçu de l'extérieur).
Merci!
- Pourquoi voulez-vous utiliser une usine? Qu'essayez-vous de réaliser?
- La pensée ce n'est pas une solution sucrée, vous pouvez passer outre la carte de béton Forme de paramètres spécifiques. Par ailleurs: est-il nécessaire de fournir le rayon sur la création? Vous pouvez définir certains le rayon par défaut lors de la création puis de définir rayon après la création de la forme.
- Eh bien, j'ai pensé à cette option, mais il est en contradiction avec l'idée de constructeur...
- L'erreur ne peut pas être là où vous le montrez. Ce que vous êtes probablement obtenir est une erreur parce que votre cercle d'usine n'est pas abstrait, mais vous n'avez pas à mettre en œuvre toutes les méthodes à partir de votre
ShapeFactory
interface. Pourquoi pensez-vous que vous avez besoin usines pour ce cas d'utilisation? - D'accord. Pour ce faire, ici, serait sans doute un cas où tout est un conteneur de fret, de même les ongles avec le même marteau.
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options:
1) Résumé De L'Usine:
RectangularShape extends Shape
RoundShape extends Shape
et
RectangularShapeFactory
etRoundShapeFactory
2) Constructeur (voir aussi le Point 2 dans l'efficacité de Java)
ShapeFactory
implémentations encore besoin d'une interface commune.Ce que vous essayez de faire est tout simplement impossible. Si les arguments du constructeur sont différents, alors le code client devra faire un travail différent pour un
Circle
comme pour unSquare
et vous ne pouvez pas résoudre ce avec le code uniforme. Si il y a d'autres travaux de l'usine est en train de faire en plus de s'occuper les arguments du constructeur que vous croyez devrait se produire dans une usine, puis vous avez besoin de poster à votre question et de l'état de la difficulté que vous rencontrez dans l'affacturage cette commune code du travail.Tous vos implémentations doivent prendre le même nombre d'arguments, vous avez trois options: