首页 > 代码库 > Memento
Memento
#include <iostream>#include <string>using namespace std;class Memento{public: Memento(string sState) { m_sState = sState; } string GetState() { return m_sState; } void SetState(string sState) { m_sState = sState; } private: string m_sState;};class Originator{public: Originator() : m_memento("") {} void Executor(string sDo) { cout<<sDo<<endl; } void SetSate(const Memento& memento) { m_memento = memento; cout<<"current state:"<<m_memento.GetState()<<endl; } Memento CurrentState() { return m_memento; }private: Memento m_memento;};class Caretaker{public: Caretaker() : m_backupMemento("") { m_executor.SetSate(Memento("Initial state")); } void Begin() { m_backupMemento = m_executor.CurrentState(); m_executor.SetSate(Memento("ready for transaction")); m_executor.Executor("begin transaction..."); } void Rollback() { m_executor.SetSate(Memento("rollback transaction")); m_executor.Executor("rollback..."); m_executor.SetSate(m_backupMemento); } private: Originator m_executor; Memento m_backupMemento;};int main(int argc, char *argv[]){ Caretaker caretaker; caretaker.Begin(); caretaker.Rollback(); return 0;}
Memento
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。