Memento - PowerPoint PPT Presentation

1 / 19
About This Presentation
Title:

Memento

Description:

Cr er un Memento contenant un portrait de l' tat interne actuel. ... un exemple simple qui permet de sauvegarder l' tat actuel et de le restaurer. ... – PowerPoint PPT presentation

Number of Views:99
Avg rating:3.0/5.0
Slides: 20
Provided by: Ray4230
Category:
Tags: actuel | memento

less

Transcript and Presenter's Notes

Title: Memento


1
Memento
  • Un patron de conception

par Rémi L. Lavoie
2
But
  •  Sans violation de lencapsulation,
  • saisir et transmettre à lextérieur dun
  • objet létat interne de celui-ci, dans le
  • but de pouvoir ultérieurement le
  • restaurer dans cet état. 

3
Définition
  • Le patron Memento enregistre et extériorise
    létat interne dun objet pour pouvoir restaurer
    lobjet à un état précédant plus tard. Létat de
    lobjet est sauvegardé à des points stratégiques
    pour que le mécanisme  undo  permette aux
    utilisateurs de restaurer un objet à létat ou il
    était avant une certaine opération.

4
Diagramme de classe
5
Rôles des Classes
  • Originator
  • Créer un Memento contenant un portrait de létat
    interne actuel.
  • Utilise le Memento pour restaurer son état interne

6
Rôles des Classes
  • Caretaker
  • Est responsable du  safe-keeping  du memento
  • Nopère jamais ou nexamine jamais le contenu du
    memento

7
Rôles des Classes
  • Memento
  • Sauvegarde létat interne de lobjet Originator.
    Peut sauvegarder autant de composantes
    nécessaires (beaucoup ou peu) de létat de
    Originator (laissez à la discrétion de
    loriginator)
  • Protège contre laccès par des objets autres que
    loriginator.Les mementos ont 2 interfaces.
    (façons dinteragir)Caretaker a interface minime
    vers Memento, il peut seulement passer le memento
    à dautres objets. LOriginator, par contre, a
    une large interface, qui lui laisse laccès à
    tous les informations nécessaires pour restaurer
    létat précédent. Idéalement, seulement
    loriginator qui produit le memento serait permis
    daccéder létat interne du memento.

8
Points pour/contre
  • préserve les frontières dencapsulation.
  • élimine le besoin de plusieurs instance du même
    objet (Originator) simplement pour sauvegarder
    son état. Une version plus restreinte est
    sauvegarder au lieu du Originator complet.
  • Simplifie loriginator, car la responsabilité
    de gérer le Memento est distribué au Caretaker.
  • simple à implémenter.
  • - lutilisation peut être coûteuse.
  • (si plusieurs détails à sauvegarder)

9
Conseils Pratiques
  • Si seulement 1 Memento est nécessaire, vous
    pouvez combine le Originator et le Caretaker.
  • Si vous avez besoin de plusieurs Mementos,
    sauvegarder que les changements incrémentaux.
    Ceci sauvera de lespace.
  • Memento est souvent utilisé en conjonction avec
    Command, Iterator et Singleton.

10
Pourquoi?
  • Laisser de linformation dun objet accessible à
    dautres objets par des méthodes daccès
  • Sauvegarder de linformation pour utilisation
    antérieur
  • Supporter la fonction undo/redo
  • Utilisé dans les transactions de base de données

11
Fonctionnement
12
Exemple
  • Voici un exemple simple qui permet de sauvegarder
    létat actuel et de le restaurer.

13
Caretaker
public class Caretaker // Memento
private Memento memento // Get public
Memento getMemento() return memento
// Set public void
setMemento(Memento m) memento m
14
Memento
public class Memento // State private
String state // Constructeur public
Memento( String state ) this.state
state // Get public String
getState() return state
15
Originator
public class Originator // State private
String state "OFF" // Get public String
getState() return state
//Set public void setState(String state)
System.out.println("State changed to "
state) this.state state
16
Originator (suite)
// Cree le Memento public Memento
CreateMemento() return (new Memento(
state )) // Set le Memento public
void SetMemento( Memento memento )
state memento.getState()
System.out.println( "Restored to state " state
)
17
Démonstration
par Rémi Lavoie
18
Exemples dutilisations réelles
  • Memento peut être utilisé dans une Session de
    Servlet quand une session  time-out . Létat de
    lapplication est sauvegardé à laide dun
    Memento et reconstruit quand lutilisateur accède
    au site plus tard.
  • Pour sauvegardé les dimension dune fenêtre dans
    des applications qui permette une vue
    pleine-écran ou dans une fenêtre.
  • Pour implémenter la fonction de Undo dans
    plusieurs applications.
  • Utilisé dans des transactions de base de données

19
Références
  • http//dept-info.labri.fr/baudon/Master/ArchiLog/
    Cours.ppt.pdf
  • http//www.dofactory.com/Patterns/PatternMemento.a
    spx
  • http//www.cs.unb.ca/profs/wdu/cs4015w02/ch5f.htm
Write a Comment
User Comments (0)
About PowerShow.com