Memento pattern
Nella programmazione ad oggetti, si dice Memento (ricorda) l'operazione di estrarre lo stato interno di un oggetto, senza violarne l'incapsulamento, e memorizzarlo, per poterlo poi ripristinare in un momento successivo.
Tipico esempio è l'operazione di Undo, che consente di ripristinare lo stato di uno o più oggetti a come era/erano prima dell'esecuzione di una data operazione.
La tecnica può essere usata anche in un linguaggio non-object-oriented.
Implementazione
Il punto chiave di questo pattern è la definizione di un oggetto di tipo memento nel quale verrà immagazzinato lo stato di un oggetto, l'originator. Tale oggetto memento disporrà di una doppia interfaccia:
- quella verso l'originator, più ampia, che consentirà a questo di salvare il suo stato interno e di ripristinarlo.
- quella verso gli altri, che esporrà solamente l'eventuale distruttore.
Solo l'originator conoscerà quindi la reale interfaccia del memento, e solo esso sarà in grado di istanziarlo.
Voci correlate
- Design pattern
- anti-pattern
- Design Patterns - libro
- Programmazione orientata agli oggetti
Altri progetti
Altri progetti
- Wikimedia Commons
- Wikimedia Commons contiene immagini o altri file su Memento pattern
V · D · M | |
---|---|
Creazionali | Abstract factory · Builder · Factory · Prototype · Singleton |
Strutturali | Adapter · Bridge · Composite · Container pattern · Decorator · Façade · Flyweight · Proxy |
Comportamentali | Chain-of-responsibility · Command · Interpreter · Iterator · Mediator · Memento · Observer · State · Strategy · Template method · Visitor |
Pattern di concorrenza | Active object · Balking · Binding properties · Double-checked locking · Event-based asynchronous · Guarded suspension · Join · Lock · Monitor · Proactor · Reactor · Read write lock · Scheduler · Thread pool · Thread-local storage |
Pattern architetturali | Front controller · Interceptor · MVC · n-tier · Specification · Publish–subscribe · Naked objects · Service locator · Active record · Identity map · Data Access Object · Data transfer object · ADR · Inversione del controllo |
Altri pattern | Blackboard · Business delegate · Composite entity · Dependency injection · Intercepting filter · Lazy loading · Mock object · Null object · Object pool · Servant · Twin · Type tunnel |
Libri | Design Patterns · Enterprise Integration Patterns |
Persone | Christopher Alexander · Erich Gamma · Ralph Johnson · John Vlissides · Grady Booch · Kent Beck · Ward Cunningham · Martin Fowler · Robert Martin · Jim Coplien · Douglas Schmidt · Linda Rising |
Comunità | The Hillside Group · The Portland Pattern Repository |