备忘录模式

简介: 定义:保存一个对象的某个状态,以便在适当的时候恢复对象。优点: 1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。2、实现了信息的封装,使得用户不需要关心状态的保存细节。

定义:保存一个对象的某个状态,以便在适当的时候恢复对象。

优点: 

1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。

2、实现了信息的封装,使得用户不需要关心状态的保存细节。

缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

实现

Memento 包含了要被恢复的对象的状态。

class Memento
    {
        private string state;
        public string State
        {
            get { return state; }
        }
        public Memento(string state)
        {
            this.state = state;
        }
    }

Originator 创建并在 Memento 对象中存储状态。

class Originator
    {
        private string state;
        public string State
        {
            get { return state; }
            set
            {
                state = value;
                Console.WriteLine("State=" + state);
            }
        }
        public Memento CreateMemento()
        {
            return (new Memento(state));
        }
        public void SetMemento(Memento memento)
        {
            Console.WriteLine("Restoring state...");
            State = memento.State;
        }
    }

Caretaker 对象负责从 Memento 中恢复对象的状态。

class CareTaker
    {
        private Memento memento;
        public Memento Memento
        {
            get { return memento; }
            set { memento = value; }
        }
    }

调用:

Originator originator = new Originator();
            originator.State = "On";

            CareTaker careTaker = new CareTaker();
            careTaker.Memento = originator.CreateMemento();

            originator.State = "Off";

            originator.SetMemento(careTaker.Memento);

结果:

State=On
State=Off
Restoring state...
State=On

  

目录
相关文章
|
3月前
|
设计模式 存储 Java
聊聊Java设计模式-备忘录模式
备忘录模式(Memento Design Pattern),也叫快照(Snapshot)模式。指在不违背封装原则前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。
37 0
聊聊Java设计模式-备忘录模式
|
4月前
|
存储 设计模式 Java
|
4月前
|
设计模式 安全 C++
行为型 备忘录模式
行为型 备忘录模式
23 1
|
6月前
|
设计模式 存储 数据库
设计模式~备忘录模式(memento)-22
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。记录快照(瞬间状态)/存盘。 目录  (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: 代码
23 1
|
11月前
|
设计模式 存储 Java
Java设计模式-备忘录模式(Memento)
Java设计模式-备忘录模式(Memento)
|
设计模式 存储 Java
Java设计模式 ->备忘录模式
Java设计模式 ->备忘录模式
82 0
|
设计模式
我学会了,备忘录模式
备忘录模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
121 0
我学会了,备忘录模式
|
存储 Java Spring
状态模式与备忘录模式(3)
状态模式与备忘录模式(3)
117 0
状态模式与备忘录模式(3)
|
存储 程序员 开发工具
状态模式与备忘录模式(2)
状态模式与备忘录模式(2)
119 0
状态模式与备忘录模式(2)
|
uml
状态模式与备忘录模式(1)
状态模式与备忘录模式(1)
75 0
状态模式与备忘录模式(1)