Quel est le nom de ce modèle de type d’usine et comment puis-je le représenter dans UML?

StackOverflow https://stackoverflow.com/questions/629997

  •  08-07-2019
  •  | 
  •  

Question

Exemple: j'ai plusieurs types, par exemple Roue, Frein, Moteur, Embrayage, AutoBox, ManualBox, ElectricWindow, RearParkingSensor, HeatedSeat. Celles-ci hériteront toutes d’une interface de marqueur ICarPart (pourrait être un attribut (annotation java), mais n’a aucune importance à ce stade).

J'écris ensuite ma classe Car pouvant représenter tous les types de voiture, par exemple

.
class Car
{
    string Name;
    DateTime creationDate;
    string ID;

    IList<ICarPart> parts;
}

J'écris ensuite une usine pour créer des voitures. L'usine pourrait faire référence à un XML, qui est une liste d'ingrédients pour différents types de voitures. Par exemple. (et s'il vous plaît ignorez le format, ceci est juste pour l'illustration):

<ExpensiveCar>
  <Name>Expensive Car</Name>
  <Parts>
    <HeatedSeats/>
    <Wheel count=4/>
    <RearParkingSensor/>
    <ElectricWindow type=FrontAndBack/>
  </Parts>
</ExpensiveCar>

L’usine analyserait cette liste d’ingrédients et créerait l’objet voiture. De nouveaux types de wagons seraient disponibles pour le système à condition que les pièces aient été codées et que la liste d'ingrédients XML ait été écrite.

Questions:

  1. Comment s'appelle ce modèle? Ou est-ce simplement plusieurs modèles combinés?
  2. Est-ce que cela est un anti-modèle?
  3. Comment est-ce que je représente cela dans une UML? Je pourrais faire un diagramme de classe pour les pièces et pour la classe de voiture de base. Comment puis-je afficher les instances de cette classe actuellement prises en charge et leurs composants?

Merci d'avance. Si quelque chose n’est pas clair, merci de commenter et je modifierai / udpate / fournirai plus de détails.

Était-ce utile?

La solution 3

  
      
  1. Comment s'appelle ce modèle? Ou est-ce simplement plusieurs modèles combinés?
  2.   

Le modèle décrit est le Générateur Modèle. Le modèle de générateur construit des objets complexes à partir d'un ensemble de pièces plus simples. Parfois, les objets créés par le modèle de construction sont Composite Objets (mais pas nécessairement dans le cas de la question).

Le modèle de constructeur est souvent démontré à l'aide de listes d'ingrédients codés en dur, bien que rien ne l'indique dans ce modèle, il ne semble pas non plus qu'un modèle spécifique décrive la "liste d'ingrédients". approche.

  
      
  1. Est-ce que cela est un anti-modèle?
  2.   

Non

  
      
  1. Comment est-ce que je représente cela dans une UML?
  2.   

Probablement par:

  1. Définissez le diagramme de classes montrant les pièces en tant que classes ainsi que la classe Car. Montrer que chaque classe de pièces implémente l'interface ICarPart.
  2. Peut-être que sur un diagramme de classes séparé (mais lié), les instances nommées de la classe car utilisent la notation d'instance UML. La représentation de classe d’instances vous permet de spécifier les valeurs que les attributs ont dans cette classe, par exemple
  3. .
------------------------------------------
|ExpensiveCar : Car                      |
------------------------------------------
|parts = {                               |  
|HeatedSeats,                            |
|Wheel (count = 4),                      |
|RearParkingSensor,                      |
|ElectricWindows (type = FrontAndBack) } |
------------------------------------------

Notez que, comme il s’agit d’une instance, le texte "ExpensiveCar: Car &"; devrait être souligné, mais SO ne me permet pas de le faire.

La notation que j'ai utilisée ici pour initialiser un tableau avec des parties n'est pas excellente et pourrait ne pas être la meilleure approche. Une solution consisterait peut-être à ajouter une note UML contenant le code XML réel. L’important est qu’un client puisse voir ce qui rend une voiture chère, de même qu'un programmeur.

Autres conseils

  

Comment s'appelle ce motif? Ou est-ce simplement plusieurs combinaisons de combinaisons?

Vous disposez du modèle de la méthode d'usine (création d'objets de voiture). et bonne composition ancienne (créer une voiture en roue, siège, etc.). Ce dernier est une variation de composition.

Je pense que cela peut être le motif abstrait d'usine, car vous souhaitez que l'ensemble des parties soit compatible les unes avec les autres. Vous ne voulez probablement pas de pneus de camion sur les roues d'une voiture compacte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top