memento (备忘录模式)

来源:互联网 发布:wake瑜伽软件下载 编辑:程序博客网 时间:2024/06/08 06:44

/*备忘录对象行为模式*/
class Memento;
class originator{
public:
    originator(int state);
 void SetMemento( Memento *mem);
 Memento * CreateMemento();
 void setstate(int );
 void print();
private:
 int state;
};

class Memento{
public:
 Memento(int s):state(s){}
 int getstate();
 void setstate(int);
private:
 int state;
};

class adminmem{
public:
 adminmem(Memento * m):mem(m){}
private:
 Memento * mem;
};

#include <iostream>
#include "memento.h"
#include "stdafx.h"
originator::originator(int state)
{
 this->state=state;
}

void originator::setstate(int state)
{
 this->state=state;
}

void originator::SetMemento( Memento * mem)
{
    state=mem->getstate();
}

void originator::print()
{
 //printf("%d\n",state);
 std::cout<<state;
}
Memento * originator::CreateMemento()
{
   return new Memento(state);
}

int Memento::getstate()
{
 return state;
}

void Memento::setstate(int state)
{
    this->state=state;
}

 

 

class RoleStateMemento{
public:
   int value;
   RoleStateMemento(int v):value(v){}
};

class GameRole :public RoleStateMemento{
public:
 GameRole():RoleStateMemento(10){}
    RoleStateMemento * CreateRole()
   {
        return new RoleStateMemento(value);
   }
 void RecoveryState(RoleStateMemento* pMemento)
 {
  value=pMemento->value;
 }
 void ChangeValue()
 {
  value=1;
  //printf("%d\n",value);
  std::cout<<value<<std::endl;
 }
};

class RoleStateCaretaker{
public:
 RoleStateMemento* pMemento;
};