Memento (motif de conception)

Memento (motif de conception)

Mémento (patron de conception)

Le patron mémento est un patron de conception logiciel qui fournit la manière de renvoyer un objet à un état précédent (retour arrière) sans violer le principe d'encapsulation.

Le mémento est utilisé par deux objets: le créateur et le gardien. Le créateur est un objet ayant un état interne (état à sauvegarder). Le gardien agira sur le créateur, tout en conservant la possibilité de revenir en arrière. Le gardien demande alors au créateur l'objet mémento. Il effectue l'opération (ou séquence d'opérations) souhaitée. Afin de permettre le retour arrière avant les opérations, le mémento est retourné au créateur. L'objet mémento même est opaque (le gardien ne peut, ou ne devrait pas, le modifier). Lors d'utilisation de ce patron, une attention toute particulière doit être prise de vérifier si le créateur modifie d'autres objets ou ressources - le patron mémento doit opérer sur un seul objet.

Il faut souligner que le fait de sauvegarder l'état interne de l'objet créateur doit s'effectuer sans casser le principe d'encapsulation. Cela n'est pas toujours possible (exemple: SmallTalk ne le permet pas de façon directe).

Des exemples classiques du patron mémento incluent le générateur de nombres pseudo-aléatoires, la machine à états finis, la fonction "Annulation"/"Undo".

Exemple

Cet exemple programmé en Java illustre l'usage du pattern Memento pour réaliser une commande de type annuler.

 import java.util.*;
 
 class Originator {
    private String state;
 
    public void set(String state) { 
        System.out.println("Originator: etat affecte a: "+state);
        this.state = state; 
    }
 
    public Object saveToMemento() { 
        System.out.println("Originator: sauvegarde dans le memento.");
        return new Memento(state); 
    }
    public void restoreFromMemento(Object m) {
        if (m instanceof Memento) {
            Memento memento = (Memento)m; 
            state = memento.getSavedState(); 
            System.out.println("Originator: Etat après restauration: "+state);
        }
    }
 
    private static class Memento {
        private String state;
 
        public Memento(String stateToSave) { state = stateToSave; }
        public String getSavedState() { return state; }
    }
 }
 
 class Caretaker {
    private ArrayList savedStates = new ArrayList();
 
    public void addMemento(Object m) { savedStates.add(m); }
    public Object getMemento(int index) { return savedStates.get(index); }
 }   
 
 class MementoExample {
    public static void main(String[] args) {
        Caretaker caretaker = new Caretaker();
 
        Originator originator = new Originator();
        originator.set("State1");
        originator.set("State2");
        caretaker.addMemento( originator.saveToMemento() );
        originator.set("State3");
        caretaker.addMemento( originator.saveToMemento() );
        originator.set("State4");
 
        originator.restoreFromMemento( caretaker.getMemento(1) );
    }
 }


Le résultat est:

Originator: etat affecte a: State1
Originator: etat affecte a: State2
Originator: sauvegarde dans le memento.
Originator: etat affecte a: State3
Originator: sauvegarde dans le memento.
Originator: etat affecte a: State4
Originator: Etat après restauration: State3
Ce document provient de « M%C3%A9mento (patron de conception) ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Memento (motif de conception) de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Memento (Motif de conception) — Mémento (patron de conception) Le patron mémento est un patron de conception logiciel qui fournit la manière de renvoyer un objet à un état précédent (retour arrière) sans violer le principe d encapsulation. Le mémento est utilisé par deux objets …   Wikipédia en Français

  • Motif de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Modèle de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Modèles de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Motifs de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Patrons de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Schéma de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Design Pattern — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Design Patterns — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Design pattern — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”