Dans mon application, je souhaite offrir à l'utilisateur une petite fonctionnalité d'annulation. Il n'y a pas beaucoup d'actions qui peuvent être annulées par l'utilisateur. En particulier, les actions sont:Comment implémenter la fonctionnalité d'annulation?
- Ajouter des notes à un objet
- couleur d'un objet
- Tag a objcet avec une chaîne
Maintenant, je pensais que sur la façon de mettre en œuvre. J'ai d'abord pensé à une classe d'action qui est la classe de base abstraite pour les 3 actions différentes qui peuvent être prises par l'utilisateur. Chaque fois que l'utilisateur entreprend ces actions, une nouvelle instance appropriée d'une sous-classe de cette classe Action abstraite est créée et insérée dans une liste qui contient toutes les actions.
Chaque fois que l'utilisateur veut annuler quelque chose, la liste est affichée à l'utilisateur et il peut choisir quelle action il veut annuler.
Maintenant, je pensais ce que doit être stocké dans un tel objet d'action:
- l'état de l'objet avant que l'action
- l'action réelle qui a été prise (par exemple, la chaîne qui a été ajouté à notes d'un objet)
Je ne sais pas si c'est suffisant. J'ai aussi pensé à quelque chose comme un ordre chronologique, mais cela devrait être nécessaire puisque la liste peut être maintenue chronologiquement correcte.
Y a-t-il d'autres choses que je devrais considérer?
Recherche pour le motif de memento dans GOF – pastjean
ou modèle de commande – slayerIQ
Voir aussi ici: http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine –