private $_state = null; public function getState() { return $this->_state; } public function setState($state) { $this->_state = $state; } public function createMemento() { return new Memento($this->_state); } public function setMemento($memento) { $this->_state = $memento->getState(); } public function display() { echo "state = " . $this->_state . "<br/>"; } } $objOriginator = new Originator(); $objOriginator->setState(0); $objOriginator->display(); $objCareTaker = new CareTaker(); $objCareTaker->setMemento($objOriginator->createMemento()); $objOriginator->setState(1); $objOriginator->display(); $objOriginator->setMemento($objCareTaker->getMemento()); $objOriginator->display();