2017-09-06 2 views
0

Je commence un projet consistant en quelques solveurs (résolvant tous le même type d'équation) d'équation différentielle partielle à des fins industrielles. L'application est supposée avoir une interface graphique (séparée du code de calcul) et des DLL avec différents solveurs. L'objectif est de réaliser l'extensibilité afin de créer de nouveaux solveurs et de les ajouter à la liste des solveurs en tant que plugins. Différents solveurs nécessitent des ensembles de paramètres différents. Quel type de design dois-je envisager?Choix du modèle de conception pour l'application

+0

Définissez une interface et accédez à vos solveurs via cette interface, vous êtes alors libre de (ex-) modifier les implémentations. –

Répondre

2

Stratégie Le motif semble être un bon ajustement. Il s'agit d'implémenter une interface que tous vos solveurs implémenteraient.

Ensuite, la classe constituée des solveurs contient une liste dans laquelle vous pouvez insérer/supprimer des solveurs lors de l'exécution.

De cette façon, vous encapsulant les changements (le solveur)

En savoir plus sur modèle de stratégie: https://sourcemaking.com/design_patterns/strategy

2

Je ne sais pas Gang des modèles de conception Quatre, mais je vous recommande quelques choses basées sur ce que je sais sur les méthodes des éléments finis:

  1. Commencez avec une interface (toutes les fonctions virtuelles pures) pour les solveurs.
  2. Utilisez l'injection de dépendances et une fabrique pour instancier l'implémentation du solveur en fonction du type de solution.
  3. Externaliser les paramètres dans une carte pour la facilité et la flexibilité.
  4. Rédigez des validateurs personnalisés pour chaque type de solution afin de garantir que vous disposez des informations appropriées avant de commencer ce travail d'assemblage et de résolution des équations.