Je suis la conception d'une bibliothèque de classes qui sera utilisé comme ceci:conception Classe: Etat de compensation
Engine eng = new Engine();
eng.AddPart(part).AddPart(otherPart).Run();
Le problème avec la classe est que les pièces sont conservées par le moteur, donc si vous voulez Run
avec certains d'autres pièces dont vous aurez besoin pour supprimer celles que vous avez déjà ajoutées. Il y a plusieurs solutions possibles mais je ne suis pas sûr de savoir lequel est le meilleur.
1. Ignore dans la bibliothèque de classe, les utilisateurs appelleront new
chaque fois qu'ils ont besoin de se défaire de vieilles pièces.
2. jeter automatiquement les pièces lorsque Run
est appelé
3. Ajouter Clear
méthode
4. au lieu de retourner l'objet courant de la méthode AddPart
(return this
) renvoie la nouvelle instance de Engine
et faire ne modifie pas le courant.
5. Implémentez IDisposable
de manière à ce que l'utilisateur puisse l'insérer dans l'instruction, même si aucune ressource ne doit être supprimée. Les utilisateurs utilisent comme ceci:
Engine eng = new Engine();
using(eng)
{
eng.AddPart(part).Run();
}
L'inconvénient de la seconde est qu'il les utilisateurs pourraient avoir besoin de réutiliser le même et n'attendre à ce que les pièces sont effacées. Le troisième est bien, mais les utilisateurs peuvent oublier d'appeler la méthode Clear
. La quatrième option allouera de nombreuses instances et la cinquième est non intuitive.
Des suggestions?
Seule Yugo a déjà implémenté l'option 2. –