public function testMemento() { $originator = new Originator(); $caretaker = new Caretaker(); $originator->state = "On"; $caretaker->memento = $originator->createMemento(); $originator->state = "Off"; $originator->setMemento($caretaker->memento); $this->assertEquals($originator->state, 'On'); }
public function run() { $o = new Originator(); $o->setStatus('status1'); $this->saveToHistory($o->getStatusAsMemento()); $o->setStatus('status2'); $this->saveToHistory($o->getStatusAsMemento()); $id = 2; $O->restoreFromMemeto($this->getStatus($id)); }
public function testMemento() { $originator = new Originator(); $originator->setState("On"); $this->assertEquals("On", $originator->getState()); $memento = $originator->createMemento(); $this->assertInstanceOf('Behavioral\\Memento\\Memento', $memento); $caretaker = new Caretaker(); $caretaker->setMemento($memento); $originator->setState('Off'); $this->assertEquals("Off", $originator->getState()); $memento = $caretaker->getMemento(); $this->assertInstanceOf('Behavioral\\Memento\\Memento', $memento); $originator->restore($memento); $this->assertEquals("On", $originator->getState()); }
public function runCustomLogic() { $originator = new Originator(); //Setting state to State1 $originator->setState('State1'); //Setting state to State2 $originator->setState('State2'); //Saving State2 to Memento $this->saveToHistory($originator->getStateAsMemento()); //Setting state to State3 $originator->setState('State3'); // We can request multiple mementos, and choose which one to roll back to. // Saving State3 to Memento $this->saveToHistory($originator->getStateAsMemento()); //Setting state to State4 $originator->setState('State4'); $originator->restoreFromMemento($this->getFromHistory(1)); //State after restoring from Memento: State3 return $originator->getStateAsMemento()->getState(); }
public static function run() { /* @var $savedStates Memento[] */ $savedStates = array(); $originator = new Originator(); //Setting state to State1 $originator->setState("State1"); //Setting state to State2 $originator->setState("State2"); //Saving State2 to Memento $savedStates[] = $originator->saveToMemento(); //Setting state to State3 $originator->setState("State3"); // We can request multiple mementos, and choose which one to roll back to. // Saving State3 to Memento $savedStates[] = $originator->saveToMemento(); //Setting state to State4 $originator->setState("State4"); $originator->restoreFromMemento($savedStates[1]); //State after restoring from Memento: State3 }
} //管理者caretaker类 class Caretaker { private $memento; public function get_memento() { return $this->memento; } public function set_memento($memento) { $this->memento = $memento; } } //客户端,即测试 $o = new Originator(); $state = 'On'; $o->set_state($state); $o->show(); $c = new Caretaker(); $memento = $o->create_memento(); //$o2 = new Originator(); $state2 = '2'; $o->set_state($state2); $o->show(); $memento2 = $o->create_memento(); $c->set_memento($memento); $c->set_memento($memento2); $state = 'Off'; $o->set_state($state); $o->show();
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();
class Caretaker { // 负责人(Caretaker)角色 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();
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(); }
public function __construct() { $this->first = 'first'; $this->second = 'second'; $this->ct = new Caretaker(); $this->orig = new Originator(); $this->orig->setState($this->first); $this->ct->addMemento($this->orig->createMemento()); $this->orig->setState($this->second); $this->ct->addMemento($this->orig->createMemento()); $this->orig->setMemento($this->ct->getMemento(1)); echo $this->orig->state; }
/* * 管理员 */ 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();