2009-10-28 4 views
2

J'essaye de comprendre le modèle abstrait de conception d'usine. J'ai beaucoup de problèmes avec ça. J'essaye d'employer l'exemple suivant pour développer un diagramme de classe d'UML:Résumé Usine Question

Les concepteurs de voiture peuvent concevoir beaucoup de différents types de voitures. Les voitures peuvent avoir deux portes ou quatre portes. Les voitures peuvent être à quatre roues motrices, ou ils peuvent être deux roues motrices. Les voitures sont composées de différentes parties: roues, portes, moteur, transmission, etc. Chaque partie a une opération différente: Par exemple, la transmission peut avoir first_gear(), second_gear(), third_gear(), fourth_gear(), reverse() , neutre().

Les pièces automobiles (énumérées ci-dessus) sont disponibles dans les familles: Honda, Jeep, Ford, etc.

Utilisation du Résumé méthode de conception d'usine, je dois développer un système logiciel pour que le système peut facilement changer de voiture d'une famille à l'autre.

Voici ce que j'ai pensé jusqu'ici: Avoir une usine, et plusieurs usines abstraites. Ainsi, les usines abstraites créent le modèle, tandis que l'usine crée les pièces ...

Quelqu'un peut-il aider? Merci ..

+3

Cela ressemble beaucoup à une tâche de devoirs – Ruben

+1

Il est, celui que j'essaie de comprendre et de compléter. Je ne cherche pas à le faire pour moi. – Andrew

+0

Qu'est-ce que vous ne comprenez pas? Votre approche semble solide en ce qui me concerne. –

Répondre

3

Il y a un exemple parfait dans les patrons de conception Head First, consultez-le gratuitement sur google books. Ils utilisent une pizzeria au lieu d'une usine automobile mais la même idée. M'a appris le modèle parfaitement.

Head First Design Patterns

+0

+1. Exactement ce à quoi je pensais. –

5

Le modèle de conception pour l'usine abstraite signifie que vous avez une usine abstraite et de nombreuses implémentations de « usines » qui en découlent.

Dans votre cas, vous auriez probablement une usine abstraite appelée VehicleFactory qui serait à son tour dérivée de HondaFactory, JeepFactory, FordFactory. Dans votre exemple, vous auriez probablement aussi une classe d'objets qui peuvent être créés à partir d'une fabrique abstraite. Ex: TwoDoorCar, FourDoorCar. Ces classes seraient également abstraites et auraient des implémentations concrètes comme Ford2Door, HondaFourDoor. Le but de l'usine abstraite est d'abstraire la construction de ces objets concrets. La méthode:

FourDoorCar VehicleFactory::CreateFourDoorCar() = 0; 

aurait des applications concrètes comme:

FourDoorCar HondaFactory::CreateFourDoorCar() { return new HondaFourDoor(); } 

De cette façon, toutes vos méthodes de création sera décidée sur la base d'une ligne de code:

VehicleFactory factory = new HondaFactory(); 

au lieu de tous les placez-vous créer de nouvelles voitures à quatre portes et deux portes. Espérons que cela aide.

+0

Ceci est une excellente explication. J'ai ouvert la question parce que je n'étais pas sûr à 100% moi-même et je suis parti éclairé. Merci! – MBillock

+0

Heureux d'aider :) – Jordan