当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 设计模式系列 - 备忘录模式

设计模式系列 - 备忘录模式

2019年01月01日  | 移动技术网IT编程  | 我要评论

备忘录模式通过保存一个对象的某个状态,以便在需要的时候恢复该对象。

介绍

备忘录模式属于行为型模式,它通过在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

类图描述

代码实现

1、创建实体类

public class memento
{
    private string state;
    public memento(string state)
    {
        this.state = state;
    }

    public string getstate() => state;
}

2、创建状态处理类

public class originator
{
    private string state;
    public void setstate(string state)
    {
        this.state = state;
    }

    public string getstate()
    {
        return state;
    }

    public memento savestatetomemento()
    {
        return new memento(this.state);
    }

    public void getstatefrommemento(memento memento)
    {
        state = memento.getstate();
    }
}

3、创建储存集合

public class caretaker
{
    private list<memento> mementolist = new list<memento>();

    public void add(memento state)
    {
        mementolist.add(state);
    }

    public memento get(int index)
    {
        return mementolist[index];
    }
}

4、上层调用

class program
{
    static void main(string[] args)
    {
        originator originator = new originator();
        caretaker caretaker = new caretaker();
        originator.setstate("state #1");
        originator.setstate("state #2");
        caretaker.add(originator.savestatetomemento());
        originator.setstate("state #3");
        caretaker.add(originator.savestatetomemento());
        originator.setstate("state #4");

        console.writeline($"current state:{originator.getstate()}");
        originator.getstatefrommemento(caretaker.get(0));
        console.writeline($"first saved state:{originator.getstate()}");
        originator.getstatefrommemento(caretaker.get(1));
        console.writeline($"second saved state:{originator.getstate()}");

        console.readkey();
    }
}

总结

备忘录模式常用于数据的可回退操作,这样能解决一些义务处理的误操作。为了节省内存,可使用 原型模式+备忘录模式 的方式。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网