Nella mia applicazione voglio fornire all'utente una piccola funzionalità di annullamento. Non ci sono molte azioni che possono essere annullate dall'utente. In particolare le azioni sono:Come implementare la funzionalità di annullamento?
- aggiungere note a un oggetto
- colori di un oggetto
- Tag un objcet con una stringa
Ora ho pensato a come implementare questa. Per prima cosa ho pensato ad una Action Class che è la classe base astratta per le 3 diverse azioni che possono essere intraprese dall'utente. Ogni volta che l'utente intraprende queste azioni, viene creata una nuova istanza appropriata di una sottoclasse di questa classe Action astratta che viene inserita in un elenco che contiene tutte le azioni.
Ogni volta che l'utente desidera annullare qualcosa, l'elenco viene visualizzato all'utente e può scegliere l'azione che desidera annullare.
Ora stavo pensando che cosa deve essere conservato in un tale oggetto di azione:
- lo stato dell'oggetto prima che l'azione
- l'azione reale che è stata presa (per esempio, la stringa che è stato aggiunto a note di un oggetto)
Non sono sicuro se questo è sufficiente. Ho anche pensato a qualcosa come un ordinamento cronologico, ma questo dovrebbe essere necessario poiché l'elenco può essere mantenuto cronologicamente corretto.
Ci sono altre cose che dovrei considerare?
Cerca il motivo di memento in GOF – pastjean
o modello di comando – slayerIQ
Vedere anche qui: http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine –