public static function main() { //创建目标对象 $orig = new Originator(); $orig->setState('open'); $orig->showState(); //创建备忘 $memento = $orig->createMemento(); //通过Caretaker保存此备忘 $caretaker = new Caretaker(); $caretaker->setMemento($memento); //改变目标对象的状态 $orig->setState('close'); $orig->showState(); //还原操作 $orig->restoreMemento($caretaker->getMemento()); $orig->showState(); }
private $_memento; public function getMemento() { return $this->_memento; } public function setMemento(Memento $memento) { $this->_memento = $memento; } } // client /* 创建目标对象 */ $org = new Originator(); $org->setState('open'); $org->showState(); /* 创建备忘 */ $memento = $org->createMemento(); /* 通过Caretaker保存此备忘 */ $caretaker = new Caretaker(); $caretaker->setMemento($memento); /* 改变目标对象的状态 */ $org->setState('close'); $org->showState(); $org->restoreMemento($memento); $org->showState(); /* 改变目标对象的状态 */ $org->setState('close'); $org->showState(); /* 还原操作 */ $org->restoreMemento($caretaker->getMemento()); $org->showState();
/* * 管理员 */ class caretaker { private $_mememto; public function setMemento($memento) { $this->_mememto = $memento; } public function getMemento() { return $this->_mememto; } } //客户端代码 //备份前的状态 $originator = new Originator(); $originator->setState('on'); $originator->showState(); //创建备忘录 $memento = $originator->createMemento(); //通过管理员保存此状态 $caretaker = new caretaker(); $caretaker->setMemento($memento); //改变目前对象的状态 $originator->setState('off'); $originator->showState(); //还原操作 $originator->restoreMemento($caretaker->getMemento()); $originator->showState();