11
votes

Comment mettre en œuvre une opération d'annulation / rétablissement sans modification majeure du programme

salut Je suis sur le point d'ajouter de nouvelles fonctionnalités à l'application que je suis actuellement en train d'écrire. Je dois écrire une signalisalité des annulations / refonte. Cependant, 90% de notre candidature est prêt et je ne sais pas quel est le meilleur moyen de mettre en œuvre cette fonctionnalité sans affectation (trop de) code déjà créé.


3 commentaires

Nous devrions être capable de voir du code ou vous devriez décrire ce que votre programme était pour que nous puissions aider.


Vous envisagez même de ne pas nous dire quel type d'application il est (web, silverlight, bureau, etc.) ou quel genre il est (jeu, crud, réseau social, etc.) Il n'y a vraiment rien pour nous de continuer.


Ceci est une application WPF qui permet à l'utilisateur de dessiner des diagrammes. L'utilisateur peut ajouter différents types de blocs, les connecter déplacer et redimensionner. Il peut également assainger des propriétés à bloquer - nom, dates, etc.


3 Réponses :


8
votes

Il n'y a pas beaucoup de détails ici. Cependant, les fonctionnalités d'annulation / de rétablissement sont généralement gérées via une variante du modèle de commande . Selon votre architecture, cela pourrait constituer une simple réchangeance de votre fonctionnalité de base dans "Commandes" ou une refonte majeure.


3 commentaires

C'est comme ça que tu le fais. Une fois que tout votre programme fait est introduit dans les cas de «commandes», vous y êtes 80%.


Si les architectes / développeurs d'origine n'avaient pas cela dans leur esprit quand ils ont commencé à concevoir le système, je suis penché vers cet étant une refonte majeure!


@TSter: Il s'agit généralement d'une nouvelle retravailleur majeure - bien que cela dépend de la manière dont l'application acheminée l'application doit commencer.



0
votes

CSLA.NET est une bibliothèque de logique commerciale qui inclut la fonctionnalité intégrale / redo. Je pense que cela est même implémenté par une interface, il devrait donc être "peu invasif". Ils le décrivent mieux que je ne peux pas ici < / a>.


2 commentaires

Le lien ne fonctionne plus.


@Jan merci, (s) lien (s) mis à jour



8
votes

comme Reed Copsey dit que le modèle le plus courant de la mise en œuvre de DO / Redo est Modèle de commande . L'idée de base est de mettre en œuvre des actions telles que des commandes qui impliquent une interface comme celle-ci: xxx

alors vous avez une classe (contrôle) qui exécute toutes les commandes dans son ensemble, cette classe doit être composée par un groupe de commandes, lorsque vous exécutez les commandes, chaque commande est poussée à l'intérieur d'une pile (par exemple la méthode push () ), dans le cas où vous souhaitez annuler les actions, vous prenez chaque élément de La pile (au moyen de pop () ) a exécute son annuler () méthode. xxx

Remarque : Ceci est un code très simple, uniquement pour essayer de clarifier les idées derrière le modèle de commande.

texte de liaison


0 commentaires