J'ai lu sur le modèle de souvenir de diverses sources sur Internet. Des informations différentes provenant de différentes sources m'ont laissé dans la confusion quant à la raison pour laquelle ce modèle est réellement nécessaire.
La mise en œuvre dofactory indique que l'intention principale de ce modèle est de restaurer l'état du système.
Le wiki indique que l'intention principale est de pouvoir restaurer les modifications sur le système. Cela donne un impact différent - en disant qu'il est possible pour un système d'avoir une implémentation de memento sans avoir besoin de restaurer. Et cette capacité de restauration en est une caractéristique.
OODesign dit que
Il est parfois nécessaire de capturer l'état interne d'un objet à un moment donné et de pouvoir restaurer l'objet à cet état plus tard dans le temps. Un tel cas est utile en cas d'erreur ou d'échec.
Donc, ma question est pourquoi utilisons-nous exactement celui-ci? Est-ce pour sauver les états précédents - ou pour favoriser l'encapsulation entre le gardien et le souvenir? Pourquoi ce type d'encapsulation est-il si important?
Edit: Pour ceux qui visitent, consultez cette mise en œuvre!
Edit : Je travaille à l'implémentation d'une solution de memento à mon problème. Je posterai une autre question à ce sujet et lierai cette question à celle-ci. Merci à tous d'avoir répondu avec de précieuses suggestions!
Edit 3 : Voici le lien vers mon exemple d'implémentation
la source
En soi, le modèle Memento est juste utilisé pour capturer et enregistrer des états. L'encapsulation n'existe que pour protéger les états du reste du système - une fois qu'un état est capturé, il doit être contrôlé avec soin. Par exemple, cela n'a pas de sens de pouvoir changer un état précédent une fois qu'il a été enregistré (ce serait changer l'historique) et il pourrait ne pas être logique de simplement revenir à un état précédent d'un objet sans affecter les autres (pour éviter le système d'entrer dans un état entièrement invalide).
L'utilisation la plus courante d'un Memento que j'ai vu est de prendre en charge la fonctionnalité d'annulation. Il est également lié au stockage de la fonctionnalité de rétablissement en reculant dans le temps.
la source
Toutes ces définitions vous orientent dans la même direction; ils disent tous qu'il s'agit de pouvoir restaurer quelque chose à son état antérieur. Ce quelque chose peut être le système entier, ou juste un seul objet.
Ce modèle est utile si un enregistrement change d'état au fil du temps, mais que vous avez besoin de pouvoir le restaurer à tout état précédent à tout moment. Ou bien, si vous devez être en mesure d'afficher l'enregistrement tel qu'il était à tout moment antérieur. Ces types d'exigences sont très courants dans de nombreux types de systèmes.
la source