关闭

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

标签: 设计设计模式
41人阅读 评论(0) 收藏 举报
分类:

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。
这里写图片描述

//备忘录模式:备忘录对象是一个用来存储另一个对象内部状态的快照的对象。
//设计备忘录的三大步骤
//1.设计记录的结点,存储记录
//2.设计记录的存储,vector,list,map,set等
//3.操作记录的类,记录结点的状态,设置结点状态,显示结点
#include <iostream>
#include <string>
using namespace std;

class Memo;

//发起人类
class Originator
{
public:
    string state;
    Memo* CreateMemo();
    void SetMemo(Memo* memo);
    void Show()
    {
        cout<<"状态:"<<state<<endl;
    }
};
//备忘录类
class Memo
{
public:
    string state;
    Memo(string strState)
    {
        state= strState;
    }
};

Memo* Originator::CreateMemo()
{
    return new Memo(state);
}

void Originator::SetMemo(Memo* memo)
{
    state = memo->state;
}

//管理者类
class Caretaker
{
public:
    Memo* memo;
};

客户端:
int main()
{
    Originator* on=new Originator();
    on->state = "on";
    on->Show();

    Caretaker* c= new Caretaker();
    c->memo = on->CreateMemo();

    on->state = "off";
    on->Show();

    on->SetMemo(c->memo);
    on->Show();
    return 0;
}

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:45次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档