Méthode de fabrique de Modèle Exemple en Java troubles
Je suis en train de créer un vraiment simple Méthode de Fabrique de modèle de conception exemple en Java. Je ne sais pas vraiment de Java, je suis nouveau en programmation en général, mais j'ai besoin de venir avec une base FactoryMethod exemple implémenté en java. La suivante est ce que je suis venu avec. Il y a un certain nombre d'erreurs, j'en suis sûr, je suis pas certains constructeurs apparemment et je m'embrouille avec les classes abstraites et les interfaces. Pourriez-vous signaler mes erreurs et de les corriger mon code avec une explication s'il vous plaît? Merci d'avance pour votre temps et votre aide.
public abstract class Person
{
public void createPerson(){ }
}
public class Male extends Person
{
@Override
public void createPerson()
{
System.out.print("a man has been created");
}
}
public class Female extends Person
{
@Override
public void createPerson()
{
System.out.print("a woman has been created");
}
}
public class PersonFactory
{
public static Person makePerson(String x) //I have no Person constructor in
{ //the actual abstract person class so
if(x=="male") //is this valid here?
{
Male man=new Male();
return man;
}
else
{
Female woman=new Female();
return woman;
}
}
}
public class Test
{
public static void main(String[] args)
{
Person y= new Person(makePerson("male")); //definitely doing smth wrong here
Person z= new Person(makePerson("female")); //yup, here as well
}
}
Il y a un implicite, sans paramètre
"... et de corriger mon code avec une explication s'il vous plaît?" ce n'est pas un service de correction des Devoirs. Merci de nous montrer toutes les erreurs de compilation et de décrire les problèmes de comportement. Le fardeau de la preuve de l'effort doit être le vôtre.
Plein D'Anguilles ce n'est pas des devoirs à faire. Je suis à étudier pour les examens et j'ai besoin d'étudier le FactoryMethod modèle de conception. L'internet est plein avec Java exemples que je trouve inutilement compliqué. Je ne cherche pas à "tricher" je suis en train d'apprendre c'est pourquoi j'ai fourni le code que j'ai écrit, mais qui ne fonctionne pas.
Il ne s'agit pas de la tricherie, mais plutôt une question de vous ne devriez pas essayer de le rendre difficile pour les autres de l'aide, et vous devriez vous montrer plus d'efforts. Vous devriez poster vos messages d'erreur, vous devriez prendre l'effort d'essayer de déboguer votre code et de montrer les résultats de cet effort. C'est seulement le droit de le faire si vous vous posez pour obtenir des conseils gratuits.
new
pour les classes, sauf si vous définissez un constructeur avec paramètres."... et de corriger mon code avec une explication s'il vous plaît?" ce n'est pas un service de correction des Devoirs. Merci de nous montrer toutes les erreurs de compilation et de décrire les problèmes de comportement. Le fardeau de la preuve de l'effort doit être le vôtre.
Plein D'Anguilles ce n'est pas des devoirs à faire. Je suis à étudier pour les examens et j'ai besoin d'étudier le FactoryMethod modèle de conception. L'internet est plein avec Java exemples que je trouve inutilement compliqué. Je ne cherche pas à "tricher" je suis en train d'apprendre c'est pourquoi j'ai fourni le code que j'ai écrit, mais qui ne fonctionne pas.
Il ne s'agit pas de la tricherie, mais plutôt une question de vous ne devriez pas essayer de le rendre difficile pour les autres de l'aide, et vous devriez vous montrer plus d'efforts. Vous devriez poster vos messages d'erreur, vous devriez prendre l'effort d'essayer de déboguer votre code et de montrer les résultats de cet effort. C'est seulement le droit de le faire si vous vous posez pour obtenir des conseils gratuits.
OriginalL'auteur | 2012-05-12
Vous devez vous connecter pour publier un commentaire.
En bref il y a plusieurs questions dans votre version ont été corrigés ci-dessous:
createPerson
méthode est inutile.==
au lieu de.equals
dans votre méthode de fabrique.J'ai amélioré votre Personne de la classe pour ajouter un champ de membre qui est partagée par les Hommes et les Femmes de la classe, afin de montrer comment le partage d'un commun abstrait constructeur pourrait être utilisé.
Dans le sens général, cette mise en œuvre est appelé comme le Simple Modèle de Fabrique, de dire que c'est pas un modèle de conception, mais une programmation orientée objet. Je vais donner une réponse avec un exemple peu de temps comme une réponse.
Belle Ex 🙂 merci!+1
merci Amir c'est agréable de réponse....
OriginalL'auteur Amir Afghani
Devrait être:
La raison pour laquelle il est
est parce que vous avez une méthode statique makePerson (ce qui signifie que vous n'avez pas à de "nouveaux" d'une classe à l'appel à la méthode qu'il n'est pas une méthode d'instance) c'est à dire une variable statique dans une classe est disponible à toutes les instances d'une classe. Une méthode statique est appelé TheClassItIsDefinedIn.TheMethodSignature
En outre:
devrait vraiment être une interface que vous n'avez pas de code fonctionnel qui est partagé entre les types dérivés (bien non montré ici) et voici une dilettantes explication de l'abstrait et de l'interface:
interface: Un contrat qui stipule " j'ai de la méthode de blabla et blah2 de sorte que toute classe implémentant moi doit avoir une méthode de même nom et de la signature (et il peut avoir n'importe quel code il aime en tant qu'il correspond au type de retour, etc)'
résumé: une classe abstraite peut avoir des signatures de méthode comme une interface, MAIS il faudrait aussi ont généralement des implémentations concrètes qui sont génériques parmi tous issus types
ajouter un point de rupture dans votre environnement de débogage pour tester (mais qu'il doit être)
Parce que rien n'appelle
createPerson
.Pourquoi devrait-il?
OriginalL'auteur Paul Sullivan
Je vous recommande de prendre une poignée de programmation java avant de commencer à appliquer les modèles de conception.
Les modèles de conception nécessite normalement OO principes, et en tant que tel n'est pas beaucoup de sens si vous n'avez pas les bonnes pratiques de programmation.
Néanmoins, la définition de votre méthode de Fabrique regarde, à droite, dans le contexte de la signification, mais pas dans la facilité d'utilisation. La Méthode de besoins pour créer un objet, et donc de renvoyer une référence à l'objet créé. En outre, l'objet créé est habituellement différente de la classe qui implémente la Méthode de modèle, puisqu'il est prévu que l'instance créée est utilisée par l'objet, dans ce cas Personne.
Voici donc un résumé de l'exemple de probablement comment vous pouvez utiliser le modèle de fabrique.
Ce serait le meilleur exemple pour la méthode de fabrique!
La méthode abstraite newStudent est vraiment une méthode de fabrique, que cet exemple diffère de la [simple modèle de fabrique], qui a mis en place à l'aide de l'interrupteur ou if-else.
OriginalL'auteur maress
Exemple complet basé sur @maress' code :
OriginalL'auteur JAN
Refait le code ci-dessus.
Notes principales:
Créé les objets (
Male
etFemale
) une fois en statique bloc.Pas la création d'un nouvel objet à chaque fois. La création se fait une fois. Chaque
makePerson
appels de retour de l'objet existant de l'usine.Retiré
createPerson
méthodeRegarder related post @
Modèle De Fabrique. Quand à l'utilisation de méthodes de fabrique?
OriginalL'auteur Ravindra babu