适用于想要回复某个时间点的数据,类似于数据库的恢复。
类图:
java实现:
原始类
public class Originator {
private String status = "";
public void setStatus(String status){
this.status = status;
}
public String getStatus(){
return this.status;
}
public Memento createMemento(){
return new Memento(this.getStatus());
}
public void restoreMemento(Memento memento){
this.setStatus(memento.getStatus());
}
}
备忘录类
public class Memento {
private String status="";
public Memento(String status){
this.status = status;
}
public void setStatus(String status){
this.status = status;
}
public String getStatus(){
return this.status;
}
}
管理类
public class MementoManager {
private Memento memento;
public void setMemento(Memento memento){
this.memento = memento;
}
public Memento getMemento(){
return memento;
}
}
场景类
ublic class Client {
public static void main(String[] args){
Originator originator = new Originator();
MementoManager mementoManager = new MementoManager();
mementoManager.setMemento(originator.createMemento());
originator.restoreMemento(mementoManager.getMemento());
}
}
php实现
class Originator
{
private $status = '';
public function setStatus($status)
{
$this->status = $status;
}
public function getStatus()
{
return $this->status;
}
public function createMemento()
{
return new Memento($this->status);
}
public function restorMemento(Memento $m)
{
$this->setStatus($m->getStatus());
}
}
class Memento
{
private $status;
public function __construct($status)
{
$this->status = $status;
}
public function getStatus()
{
return $this->status;
}
}
class MementoManager
{
private $memento;
public function getMemento()
{
return $this->$memento;
}
public function setMemento(Memento $memento)
{
$this->memento = $memento;
}
}