2010-03-28 3 views
2

J'ai une petite crise de conception, je fais une classe d'avion, qui est fait deMotif usine - Quand avez-vous dire que vous avez besoin d'une usine spécialisée

un moteur

2 ailes

et N sièges

Le moteur prend en compte la taille du moteur et les ailes ont une portée.

serait-ce encore possible d'avoir un PlaneFactory, lorsque l'usine devra peut-être prendre plusieurs paramètres pour configurer le plan (ailes, moteur, pas de sièges)

merci à l'avance

os

Répondre

4

si votre objet d'avion se transforme en un complexe, vous pouvez utiliser builder design pattern pour créer la partie de l'objet par une partie

vous pouvez facilement appliquer le fameux exemple de pizza trouvée dans wikipedia sur votre problème, le b La classe uilder aura des méthodes comme construire des ailes, construire un moteur .... et finalement getplane(). vous pouvez avoir différentes classes de constructeur qui mettent en œuvre la classe abstraite constructeur, chaque constructeur crée un plan différent (en utilisant différents composants)

+0

Merci, cela semble beaucoup mieux – dbones

1

Cela dépend vraiment de ce que vous avez besoin exactement, vous pouvez utiliser plusieurs modèles de conception. La méthode d'usine est une bonne idée pour une création complexe, c'est en fait le point du modèle. Si vous voulez construire l'avion graduellement, surtout quand vous auriez besoin de travailler avec des parties d'avion avant même que tout l'avion soit fini (par exemple, vous n'avez pas besoin d'ailes pour vendre des billets pour des sièges:)) ... modèle de constructeur est vraiment ce dont vous avez besoin. Il se peut aussi que vous ayez plusieurs avions et sièges, qui sont les mêmes (par exemple, vous avez trois types de moteurs standard), que vous pouvez utiliser le modèle Flyweight, donc tous les avions avec le même type d'ailes utilisera exactement les mêmes ailes (totalement irréaliste:) ...). Il peut aussi arriver que la création d'un panneau de contrôle pour l'avion demande beaucoup de travail, ce qui peut être fait avant et juste copié - c'est le modèle Prototype. Je pense que ce sont les plus susceptibles que vous pourriez avoir besoin, pour une réponse plus concrète, vous devriez donner plus d'informations sur ce dont vous avez besoin.

Questions connexes